Bir sözcüğü komut satırından geriye doğru nasıl silebilirim (bash ve zsh)?


118

Bir sözcüğü komut satırından geriye doğru nasıl silebilirim? Gerçekten Ctrl+ ile son 'sözcüğü' silen bazı editörlere alışkınım Backspace, ve bu işlevselliği komut satırında da istiyorum.

Şu anda Bash'i kullanıyorum ve bir kelimeyi geriye atlayıp sonra bir kelimeyi silebilsem de, bunu hızlı anahtar olarak veya olayı Ctrl+ olarak seçmeyi tercih ederim Backspace.

Bunu nasıl başarabilirim?

Yanıtlar:


169

ctrlwstandart "öldürme sözcüğü" dır (aka werase). ctrlutüm çizgiyi öldürür ( kill).

Bunları ile değiştirebilirsiniz stty.

-bash-4.2$ stty -a
speed 38400 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = <undef>;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
-bash-4.2$ stty werase ^p
-bash-4.2$ stty kill ^a
-bash-4.2$

Birinin gerçek kontrol karakterini çizgiye koyması gerekmediğine, stty'nin koyduğunu ^ve ardından kontrolle vuracağınız karaktere dikkat edin.

Bunu yaptıktan sonra ctrlp, vurursam satırdaki bir kelimeyi siler. Ve eğer ctrlavurursam, tüm çizgiyi silecek.


sttyKomutu kullanarak "kill word" kelimesini Ctrl-v Ctrl-Backspace Ctrl+BckSpcyazdıktan stty werasesonra atamaya çalıştım . Bu, değişmez Ctrl-Backspace karakterini argüman olarak ekler stty werase. Ne yazık ki Ctrl-Backspacesözcüğü silmek için yazmaya gerek duymaz , sadece Backspacetuşla çalışır . Bu yüzden @terdon'un bunu nasıl yapacağını öğrenmek için isteğini ikinci olarak istiyorum. weraseVarsayılana sıfırlamak için kullanın stty werase Ctrl-v Ctrl-w.
Timothy Martin

@TimothyMartin Nasıl yapılacağı konusunda biraz takılıp kaldım ctrl-backspace. Geri alma genellikle ya ctrl-hda gibi gönderilir ctrl-?, öyle ctrl-backspacede olabilir ctrl-ctrl-backspace. Farklı bir şey gönderilip gönderilmediğini anlamaya çalıştım, ama en azından macun, yazarken geri adım attı ctrl-backspace.
kurtm

3
ctrl + w sözcüğü etkili bir şekilde siler ancak aynı zamanda sakladığınız herhangi bir şeyi silerek (veya aşağı doğru bastırmak için) panoya kopyalar.
Elijah Lynn

1
esc - delete sadece çalıştı :-)
Rene Wooller

1
bu ... hayat değişiyor. Tanrım.
kablolu00

27

Bunu da yapabilirsiniz CtrlW.

Başka bir seçenek de kendi kısayolunuzu belirlemektir ancak bu, kullandığınız terminal emülatörüne bağlı olacaktır. İçin xtermve rxvtbaşkaları belki, bu satırı ekleyin senin ~/.inputrc(o yoksa dosya oluşturmak):

## rxvt, xterm
"\b":backward-kill-word

gnome-terminalve ilkinde AltBackspacevarsayılan olarak var gibi gözüküyor ama görünüşe görereadline() almak için yama yapman gerekiyor CtrlBackspace.

Ayrıca bakınız:



0

Mac'te şunları kullanabilirsiniz:

Fn+Delete


2
Bu, imlecin önündeki 1 karakteri siler, arkasındaki 1 sözcüğü siler
Dannid

Bunun hala geçerli olup olmadığını bilmiyorum, ama bu Mac'te <Alt> + <Backspace> olur.
Hassan
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.