İmleci kelimeler / dizeler arasında hareket ettirmek için CTRL'ye bas


86

CTRLSol ve sağ ok tuşlarını kullanırken daha hızlı hareket etmek için tuşu kullanmaya alışkınım (her seferinde bir karakter yerine bir kelimenin sonuna gider).

Bunu bir şekilde Bash'te yapabilir miyim?

Muhtemelen kodlayabilirim, ancak daha kolay / zaten yapılmış bir şey olup olmadığını merak ediyordum.

Yanıtlar:


95

Varsayılan okuma satırı tuş bağlamaları ile ALT+ Bbir kelime geri, ALT+ Fbir kelime ileri gider.

Varsayılan Ubuntu kurulumu ayrıca CTRLalıştığınız gibi + oklar sağlar . Bunlar şu /etc/inputrcşekildedir ve belirtilmiştir:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Neden üçüne ihtiyacımız olduğundan emin değilim ...


20
@bryan_ruiz: Farklı klavyeler (terminal emülatörleri, vb.) farklı sıralar çıkarır. Sırayı görmek için Ctrl-v'ye ve ardından tuşuna basın. PuTTY'de benim için Ctrl-v Ctrl-Sağ Ok, ^[OCsizinki ile aynı olanı veriyor . Gelen xtermalıyorum ^[[1;5Thomas aynı olan.
Dennis Williamson

7
o düzenleyerek bunu daha iyi olurdu ~/.inputrcyerine
svassr

1
Bu olmadan ne kadar yaşadığıma inanamıyorum.
Ryan Shillington

4
~ / .İnputrc dosyasının düzenlenmesi, 'sistem'in (/ etc / inputrc) yüklenmesini durdurabilir. Ayrıca, 'set -o' ayarlarının - "set -o emacs" komut satırında örneğin "set -o vi" yerine emacs tarzı tuş bağlamaları vermesi gerektiğini unutmayın (bunu yaptıktan sonra, W veya b) kullanmaya çalışmadan önce ESC.
David Goodwin

5
@DavidGoodwin Biraz aradıktan sonra eklemek $include /etc/inputrcsistem inputrc dosyasını da yükleyecektir.
SirGuy

42

Thomas'ın açıkladığı gibi, bağlamaları ekleyebilirsiniz /etc/inputrc.

Her giriş yaptığınızda yüklenmesi için başka bir alternatif de onları şu şekilde yerleştirmektir ~/.bashrc :

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

cat > /dev/null Klavyenizin gönderdiği karakterlere bakmak için kullanabileceğinizi öğrendim , örneğin, CTRL + sağ ok şunları gösterir:

^[OC

komutta kodun geldiği yer ^[burası ile aynıdır .\ebind

Ayrıca aşağıdaki gibi bağlamalara da bakabilirsiniz:

bind -p | grep forward-word

Bütün bunlar oldukça harika ve bash'ın biraz daha gücünü bulduğuma sevindim.


6
Ben düşünüyorum oysa bu sadece Bash etkileyecek inputrcçözüm ayrıca diğer programlar için geçerli olacağını kullanım taleb, örneğin Python yorumlayıcısı, diğer birçok kabuklar. Rootunuz ~/.inputrcyoksa veya tüm kullanıcılara uygulanmasını istemiyorsanız komutları da koyabileceğinizi unutmayın .
Thomas

Her ne sebeple olursa olsun, bu sadece yukarıdaki satırlarınızın sırasını değiştirdiğimde benim için çalıştı. Daha fazla not. Windows 8.1'den macun arkasında Ubuntu 14.04LTS kullanıyorum.
Rebecca Dessonville

2
+1 özellikle için I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending. #TIL
Sungam

3
readAynı etkiyi elde etmek için de yazıp enter tuşuna basabilirsiniz cat > /dev/null. Tembelim, bu yüzden daha az yazarak çözümleri seviyorum. :)
theglossy1

ctrl + 4 kedimi çöker (^ / gönderir)
user1040495

4

Ana dizininizdeki bir .inputrc, ctrl + left'in Ubuntu'da çalışmayı durdurmasına neden olur (örneğin).

Her şeyin çalışmasını sağlamak için aşağıdakileri ~ / .inputrc dosyasına ekleyin:

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

f.kowal'a kredi


1

Ekle $include /etc/inputrc

içinde ~/.inputrc

CentOS Linux 8.2.2004 sürümü (Core) için çalıştı

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.