Vi kabuk modu için özel tuş bağlamaları, yani “set -o vi”?


18

Sadece harikalarını keşfettim ve set -o vibu vi kabuk modunu vi veya vim'i özelleştirebileceğiniz bazı yollarla özelleştirmenin mümkün olup olmadığını merak ediyorum?

Örneğin, daha uygun bir anahtar mı yoksa birleşik anahtar esc?

Şu anda desteklenmiyorsa, bazı özelleştirmelerde programın kaynak kodunu ve sabit kodunu değiştirmek ne kadar zor olurdu, yoksa bu kötü bir fikir olabilir mi?


Yanıtlar:


17

Evet, bindyerleşik eşlemeyle önemli eşlemeleri (vi- veya emacs benzeri mod için) değiştirebilirsiniz . Bu aslında bir readline özelliğidir (böylece sadece bash değil tüm readline programlarında vi benzeri bağlamalar yapabilirsiniz).

Aradığınız anahtar çağrılır vi-movement-modeve varsayılan olarak \e(kaçış) kullanılır. Buna ek olarak (ve bu oldukça aptalca) eşittir. İkinci satır, kaçmak için bağdan kurtulur:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

Koşu bind -p, bağlayabileceğiniz tüm tuşları ve mevcut bağlantılarını (varsa) gösterecektir.

bindKomutları bilgisayarınıza koyabilir .bashrcveya ~/.inputrcçalıştırdığınız tüm readline programlarına uygulanmasını sağlamak için düzenleyebilirsiniz . Readline dokümanları tüm detayları içerir.


1
Bu harika. Çok teşekkürler. Anahtar kombinasyonlarının nasıl bağlanacağını anlayabildim bind "Control-Space":vi-movement-mode- bu iyi çalışıyor. Ama örneğin vim'de tetikleyici olarak arka arkaya iki karakter yazıyorum esc, yani yazarsanız jjnormal moda dönersiniz. Bağlama ile denediğimde bu işe yaramadı, çalışmasını sağlamak için özel bir yol var mı?
Jonah

@Jonah elden bildiğimi bilmiyorum, ama son zamanlarda readline belgelerine
göz atmadım

@chishaku Jonah'ın isminin önüne bir at işareti ( @) koymanız gerekir , ya da bir bildirim almayacaktır.
derobert

2
@Jonah Ben sadece aynı şeyi yapmaya çalıştım. Bunu hiç çözdün mü?
chishaku

1
unix.stackexchange.com/questions/303282/… Herhangi bir nedenden dolayı alıntı yapmanız gerekiyorbind '"jk":vi-movement-mode'
Hielke Walinga
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.