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

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

Como posso excluir uma palavra de trás para frente na linha de comando? Estou realmente acostumado com alguns editores excluindo a última 'palavra' usando Ctrl+ Backspacee gostaria dessa funcionalidade na linha de comando também.

Estou usando o Bash no momento e, embora pudesse retroceder uma palavra e depois excluir uma palavra, prefiro ter isso como uma tecla rápida ou um evento como Ctrl+ Backspace.

Como posso conseguir isso?

Responder1

Ctrl+ Wé a "palavra mortal" padrão (também conhecida como werase). Ctrl+ Umata a linha inteira ( 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$

Observe que não é necessário colocar o caractere de controle real na linha, sttyentende-se colocar ^e então o caractere que você acertaria com controle.

Depois de fazer isso, se eu apertar Ctrl+ Papagará uma palavra da linha. E se eu apertar Ctrl+ A, apagará toda a linha.

Responder2

Alt+ Backspacefunciona para mim no bash e zsh.

Responder3

Você também pode fazer isso com CtrlW.

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

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

gnome-terminale seus semelhantes parecem ter AltBackspacepor padrão, masaparentementeexigir que você corrija readline()para obter o CtrlBackspace.

Veja também:

Responder4

Surpreendentemente, esctambém deletefunciona no macOS.

Além disso, se estiver usandoiTerm2, você pode atualizar o padrãoperfil:

Keys > Key Mapping > Presets > Natural Text Editing

informação relacionada