2012-06-03 21 views
7

Ben terminal emülatör olarak iterm2'yi kullanarak Emacs.app - emacs server ve emacsclient terminal modunu kullanarak geçiş yaptım. Yine de bazı keybindings ile sorun yaşıyorum. Özellikle M-sol ok, D, M-sağ ok, C, M-yukarı ok, A ve M-aşağı okları B basar. M-ret, en azından org modu için çalışıyor gibi görünür. Iterm2'deki tuşlar için xterm varsayılanlarını kullanıyorum ve + Esc'ye bağlı sol ve sağ seçenek tuşlarını kullanıyorum. M-left işlevini Esc-left veya Esc-right ile org-modunda alabilirim. Bu özellikle org-modda can sıkıcıdır. Anahtarlarımı sadece benim .emacs’de tekrar hatırlatmak zorunda mıyım? Bunu yapmayı nasıl yaparım?Terminal meta ok tuşlamalarında emacs

Bu http://orgmode.org/manual/TTY-keys.html#TTY-keys numaralı telefonu inceledim, ancak ok tuşlarının neden terminalde bulunmaması gerektiğini anlamıyorum.

düzenleme:

Kedi meta-up: ^[[1;9A Kedi meta aşağı: ^[[1;9B Kedi meta sağa: ^[[1;9C Kedi meta-left: ^[[1;9D

Ana sorun çözüldü ama şimdi yaşıyorum shift-up ile sorun. "<select> undefined". cat: ^[[1;2A'dan aldığım kaçış dizisi ile benzer bir eşleştirmeyi denedim. Benzer bir sorun için başka bir soru oluşturmaya isteksiz. Burada sağlanan bilgilere dayanarak

+0

Komut istemine 'cat' yazın ve meta-ok tuşlarına basın. Bu size ok tuşlarınızın çıktığı esc dizilerini gösterir. Lütfen bunları sorunuza ekleyin. Mesela terminal M-çıkış çıkışlarımda:^^^[[A'. – Casper

+0

tamam tamam, bu meta – Zach

+1

Hmm..no kullanmaya çalıştığımda emacs aldığım çıktı ile karşılaştırmak gibi görünüyor, 'cat' yazın, enter tuşuna basın ve daha sonra ok tuşlarına basın. – Casper

cevap

10

Çözüm 1

deneyebileceğiniz bir şey. Sen doğru anahtar dizileri için bu kaçış dizileri eşleştirmek için emacs anlatmak: Ben de biraz googling ile başka bir olası çözüm buldu 2

(add-hook 'term-setup-hook 
    '(lambda() 
    (define-key function-key-map "\e[1;9A" [M-up]) 
    (define-key function-key-map "\e[1;9B" [M-down]) 
    (define-key function-key-map "\e[1;9C" [M-right]) 
    (define-key function-key-map "\e[1;9D" [M-left]))) 

Çözüm: olup emacs eşleşmesi yerine iTerm bağlamaları yeniden tanımlamak aramak. Yukarıdaki sayfadan

http://offbytwo.com/2012/01/15/emacs-plus-paredit-under-terminal.html

Alıntı:

geri iTerm2 altında profil anahtar bağları giderek aşağıdaki bağlantılarında ekleyin:

M-up  : Esc-[1;4A 
M-down : Esc-[1;4B 
M-right : Esc-[1;4C 
M-left : Esc-[1;4D 
+0

Daha önce iterm ile yeniden haritalamayı denedim, ama başka bir şey yanlış yapmalıyım. Kanca olsa çalıştı. Teşekkürler! – Zach

+0

Bu değerler yanlış görünüyor; 4 sadece Alt değil, Shift + Alt'dır. – LeoNerd

2

ben cevap veriyorum 'ana sorun çözüldü, ama yeni bir cevap' olarak yanıtlayın.

Ben bu konuda bu adamın blog yazısı bulunan: - Temelde http://webframp.com/emacs/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/

yapabilirsiniz ardından 'koşmak kedi' kullanmak ve sistem/terminal tarafından yollanmaktan hangi kaçış kodları görmek için düğmeleri hile itmek M- {yukarı, aşağı, sağa, sola) ve aynı zamanda MS- {yukarı, aşağı, sağa, sola) tanımlamak için 'define-key' satırlarını ekleyin.

+1

İHTİYACINIZI İHTİYAÇ İÇİN İHTİYACINIZ. Herkesin karakter kodları biraz farklı gibi görünüyor. Yukarıda kullanılan [1; 4x]. Bu blog yazısı [1; 3x] gösterdi. Ama benimki [1; 9x] idi. Çok kafa karıştırıcı. – Chris