Gnome terminali + Vim ve Ctrl-Shift eşlemeleri


11

Gnome Terminali ile Ctrl- dizisini eşleştirmek mümkün müdür Shift?

Eşlemeleri eklemeye çalışıyorum

  • map <C-S-[> gT
  • map <C-S-]> gt

ve işe yaramıyor. Bu nasıl yapılır?

Bir şekilde haritaladım <C-S-]>, ama öyle değil <C-S-]>, ama <C-]>bu sırayla Shift'i tanımıyor gibi görünüyor. Yanlış yapılandırılmış mı, yoksa gnome terminalinin hatası mı?

Dışında. Haritalama <C-[>, basıldıktan sonra vim bekliyor gibi görünüyor. Harita zaman aşımı olduğunu düşünüyorum, ancak tam olarak bastığımda <C-[>ve başka bir şeye basmak istemediğimde bu zaman aşımından nasıl kurtulurum ?

Vim öğrenmeye yeni başladım, bu eşlemelerde açıkça yanlış olan bir şey varsa çok üzgünüm.

Yanıtlar:


8

Burada sorun CTRL-SHIFT dizisini tanımak için bir terminalde çalıştırmak için bekleyen vim almaya çalışıyorum olduğunu düşünüyorum. X'in bu tür kombinasyonları tanıması mümkün olsa da, bir terminalde çalışan uygulamalar (veya bu günlerde bir terminal emülatörü) yapamaz. Bunun nedeni, tarihsel olarak, terminallerin seri bağlantı üzerinden yalnızca yedi veya sekiz bitlik ASCII veri dizilerini gönderip alabilmesidir (buna rağmen, imleci konumlandıran, satırları kaydıran veya silen, rengi değiştiren ve diğer yararlı olan "kaçış dizileri" içerebilir. Etkileri).

ASCII karakter setinde, bilindik CTRL-A - CTRL-Z dahil 32 "Kontrol Kodu" vardır. Ancak "CTRL-SHIFT" A'dan Z'ye karşılık gelen ASCII kodları yoktur. Şimdi, gnome terminalinin kendisi bu kodları tanıyabilir (örneğin CTRL-SHIFT-V, panodan metin yapıştıracaktır), ancak vim doğrudan erişebilme.

Tabii ki, CTRL-SHIFT tuş basımlarını daha sonra bir vim eşlemesi ile tanınabilecek bir kaçış dizisine dönüştürmek için bir terminal emülatörünün ayarlanması mümkün olabilir (bilmiyorum).

=======

GÜNCELLEME

Bir terminal programı yerine X programı olarak çalışan vim'in grafik versiyonu olan gvim ile ilgilenebilirsiniz. Belki gvim CTRL-SHIFT kodlarını anlayabilir?


4

GNOME Terminal ile Ctrlanahtarla belirli kombinasyonlara izin vermeme sorunu gibi görünüyor . Çevrimiçi arama, bunun birçok örneğini gösterir.

Bilmiyorsanız, Ctrl+ page up/ page downsekmeler arasında dolaşır.


3

Bartleby'nin işaret ettiği gibi, bu bir terminal kısıtlamasıdır, çünkü vi anahtar kodları aynı olarak görür.

Bunun gibi terminaller için xtermbunu değiştirebilirsiniz. İçin gnome-terminal hangi X kaynakları ayarlarını yok sayar ben aşağıdakileri nasıl bilmiyorum:

Bu SO sorusu aynı konuyu kapsar ve bu örnek bunu .Xresourcesdosyadaki birden çok anahtarın eşleştirilmesinde gösterir . Örneğin:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Şimdi vi, Ctrlavs. CtrlShifta, Ctrlbvs. CtrlShiftb, Ctrlfvs. için gelen farklı anahtar dizilerimiz var CtrlShiftf.

Şimdi bunları şu şekilde farklı şekilde haritalandırabiliriz ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>

Orijinal soru hakkındaydı gnome-terminal, oysa cevabınız söz konusudur xterm.
egmont

@egmont: İyi bir nokta ve benim tarafımda bir gözetim. Göre bu cevap.Xresources tarafından göz ardı edilir gnome-terminal. Bu talihsiz bir durum. Cevap güncellendi.
cfi

Bu cevabı SuperUser'e bir Soru-Cevap çifti olarak hafifçe yeniden sarılmış / çaprazlanmış , çünkü sorucunun terminaline uygulanmadığı için muhtemelen burada silmeliyim .
cfi

1

Gnome terminalindeki tüm klavye kısayollarını devre dışı bırakmanız gerekiyor gibi görünüyor.


2
Klavye kısayollarını devre dışı bırakmak neden yardımcı olur?
Eliah Kagan

Benim deneyimimden hiç yardımcı görünmüyor.
Elliot Foster

1

Gelen gnome-terminaltuşları tarafından oluşturulan kaçış dizileri yapılandırılabilir değildir. Birçok anahtar için Ctrl+ keyve Shift+ Ctrl+ keyfarklı diziler oluşturur; ne yazık ki için [ve ]onlar değil, bu yüzden onları ayırt edemezsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.