Ctrl-w (kelime sil) yapılandırmak mümkün mü?


40

Normalde Ctrl+ W, en son beyaz boşluğa geri döner.

Bu gibi ek karakterler kullanacak şekilde yapılandırmak mümkün mü /?

Düzenleme: Daha net olmak için: Anahtarını yapılandırmak istemiyorum, silme işleminin de durmasını istiyorum /.

Örnek:

vim /foo/bar^W
vim /foo/

Yanıtlar:


29

Benim için çalıştı benim .bashrc aşağıdaki satırları eklemek oldu

stty werase undef
bind '\C-w:unix-filename-rubout'

Undef satırına ihtiyacınız varsa bash yeni bağlantınızı yoksayar C-w


3
stty werase undefHerhangi bir programda Cw kullanmanızı engelleyeceğinize dikkat edin (bağlama,
okuma satırında

24

Eğik çizgilerle ayrılmış sözcükleri silmek için Esc'yi, ardından geri almayı kullanabilmelisiniz.

Bunu içine koyarak bunu değiştirebilirsiniz.

bind '\C-f:unix-filename-rubout'

Şimdi Ctrl+f ne istersen onu yap.


1
teşekkürler, bu komut çalışan. Cw komutunun üzerine yazmak için bir yolu var mı? Bunu değiştirirsem C-w:..., bir sonraki boşluğa silme varsayılan davranışı yine de devreye girer. İyi çalışıyorsa, farklı bir tuşta (F gibi).
SkaveRat

Ctrl-w'nin sadece kabuk tarafından yönetildiğini sanmıyorum. Ayrıca tty tarafından da yönetilebilir. Tty ayarınız ile gösterilenler stty -anelerdir? werase için varsayılan karakter olarak control-w'niz var mı? Bu ayarı tty'den kaldırırsanız, komut ile stty werase undefbash beklendiği gibi çalışıyor mu?
saat

23

Bu özel sorun için ayrıca şunları da kullanabilirsiniz:

Alt + Backspace

$ cd /home/me/test/a_dir/    # Alt + Backspace
$ cd /home/me/test/          # Alt + Backspace
$ cd /home/me/               # ...

İyi referans: bash kelimesinin sildiği maceralar


2
Müthiş! Diğer cevapların çoğu, yeniden bağlama Ctrl+wveya Ctrl + b veya başka bir şeyi önerir unix-filename-rubout, ancak yerleşik bir bağlamanın olması çok daha iyidir: M-backspace (Alt + backspace veya Esc backspace)
Colin D Bennett

Benim için işe yaramadı
ethanjyx

@ ethanjyx oh. GNU bash üzerinde çalışıyorum. Siz de bu lezzette misiniz?
fedorqui

7

Bash ile ~ / .bashrc dosyasına aşağıdakileri koyarak istediğiniz efekti elde edebilirsiniz:

bind '"\C-w":backward-kill-word'

Hit CTRL+Vve tuş kombinasyonu sizin terminal emülatörü için neye benzediğini görmek için. Örneğin CTRL+bksp, farklı terminallerde farklı yorumlanabilir, örneğin ^Hveya ^?. ^Karakter aynıdır CTRL.


Sanırım sorumla yeterince açık değildim. /Silme-komutu-komutunu başka bir tuşa bağlamak için bir yol değil, ek bir durma karakteri yapmak istedim . Sorumu düzenlenebilir
SkaveRat

\ Cw'ye bağlanmış geriye doğru-kill-kelimesini kullanarak, bir kelimede mevcutsa, verilen son eğik çizgiden geriye doğru siler ve boşlukla sınırlandırılmış kelimeleri siler. İstediğin bu değil miydi?

Sistemim kullanıyor ^F- ancak "\^F"yukarıdaki komut dosyasında çalışmak işe yaramıyor
SkaveRat

1
CtrlKarakter yazılır \Ckomut değil \^.
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.