Como posso apagar uma palavra para trás na linha de comando (bash e zsh)?

111

Como posso excluir uma palavra para trás na linha de comando? Eu estou realmente acostumado com alguns editores de apagar a última 'palavra' usando Ctrl + Backspace , e eu gostaria dessa funcionalidade na linha de comando também.

Estou usando o Bash no momento e, embora eu possa retroceder uma palavra e, em seguida, excluir uma palavra, prefiro tê-la como um atalho ou evento como Ctrl + < kbd> Backspace .

Como pode conseguir isso?

    
por lucidquiet 09.10.2013 / 23:57

4 respostas

153
ctrl w é o padrão "kill word" (também conhecido como werase ). ctrl u mata toda a linha ( kill ).

Você pode alterá-los com 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$

Note que não é necessário colocar o caractere de controle real na linha, stty entende colocar ^ e, em seguida, o caractere que você usaria para controlar.

Depois de fazer isso, se eu pressionar ctrl p , ele apagará uma palavra da linha. E se eu pressionar ctrl a , apagará toda a linha.

    
por 10.10.2013 / 06:13
25

Você também pode fazer isso com Ctrl W .

Outra opção é definir seu próprio atalho, mas isso dependerá do emulador de terminal que você está usando. Para xterm e rxvt e talvez outros, adicione essa linha ao seu ~/.inputrc (crie o arquivo se ele não existir):

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

gnome-terminal e seu tipo parecem ter Alt Backspace por padrão, mas aparentemente requer que você remova readline() para obter Ctrl Backspace .

Veja também:

por 10.10.2013 / 06:04
21

Alt + Backspace funciona para mim no bash e no zsh.

    
por 10.10.2013 / 00:06
-2

No Mac, você pode usar:

Fn + Apagar

    
por 19.05.2016 / 17:54