¿Cómo puedo eliminar una palabra al revés en la línea de comando (bash y zsh)?

¿Cómo puedo eliminar una palabra al revés en la línea de comando (bash y zsh)?

¿Cómo puedo eliminar una palabra al revés en la línea de comando? Realmente estoy acostumbrado a que algunos editores eliminen la última 'palabra' usando Ctrl+ Backspace, y también me gustaría esa funcionalidad en la línea de comando.

Estoy usando Bash en este momento y, aunque podría retroceder una palabra y luego eliminarla hacia adelante, prefiero tener esto como una tecla rápida o un evento como Ctrl+ Backspace.

¿Cómo se puede lograr esto?

Respuesta1

Ctrl+ Wes la "palabra asesina" estándar (también conocida como werase). Ctrl+ Umata toda la línea ( kill).

Puedes cambiarlos con 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$

Tenga en cuenta que no es necesario poner el personaje de control real en la línea, sttyse entiende cómo ponerlo ^y luego el personaje que golpearía con el control.

Después de hacer esto, si presiono Ctrl+ Pse borrará una palabra de la línea. Y si presiono Ctrl+ A, se borrará toda la línea.

Respuesta2

Alt+ Backspaceme funciona en bash y zsh.

Respuesta3

También puedes hacer esto con CtrlW.

Otra opción es configurar tu propio acceso directo, pero esto dependerá del emulador de terminal que estés utilizando. Para xtermy rxvttal vez otros, agregue esta línea a su ~/.inputrc(cree el archivo si no existe):

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

gnome-terminaly los de su calaña parecen tener AltBackspacepor defecto peroaparentementerequiere que parchee readline()para obtener CtrlBackspace.

Ver también:

Respuesta4

Sorprendentemente, esctambién deletefunciona en macOS.

Además, si se utilizaiTerm2, puedes actualizar el valor predeterminadoperfil:

Keys > Key Mapping > Presets > Natural Text Editing

información relacionada