Bash: eliminar palabra delante del cursor

76

Considere la siguiente línea de comando bash, donde ^ denota la ubicación del cursor:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

Me gustaría confirmar un archivo diferente con el mismo mensaje. ¿Cómo puedo eliminar la palabra actual, desde la ubicación del cursor hasta el siguiente espacio? ¿Existe también un atajo para eliminar hacia atrás, formar el cursor hacia el primer espacio hacia atrás?

Actualización: ctrl + wborra hacia atrás, pero ¿qué atajo borra una palabra hacia adelante?

Adam Matan
fuente
2
Ctrl ues una opción para borrar de la posición del cursor al principio ...
nuez sobre Natty
23
Intente alt + d, eso puede ser útil, cuando el modo de edición de emacs está configurado.
@Mik, ¿cómo habilitas el modo emacs?
Adam Matan
@AdamMatan lo set -o emacshabilita, pero generalmente es el predeterminado; si no, puede poner esa línea en .bashrco .bash_aliases, luego obtener el archivo o recargar el terminal. Sin embargo, los accesos directos a los que puede estar acostumbrado en el modo vi no estarán disponibles, aunque algunos como ctrl + c lo estarán porque no son accesos directos de Bash.

Respuestas:

56

Respondí una pregunta similar en unix.stackexchange.com :

Bash tiene comandos de línea de lectura que no están vinculados por defecto. Puede encontrarlos en la referencia: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

El comando que está buscando se llama "shell-backward-kill-word". Primero debe seleccionar el acceso directo. Usemos Crtl + p, ya que es "comando anterior", lo mismo que la flecha hacia arriba.

bind '"\C-p": shell-backward-kill-word'

La única diferencia es que debe usar el comando "shell-kill-word" en su lugar, ya que desea eliminar el reenvío.

También hay un comando "kill-word" con Meta+ dacceso directo (prueba Esc+ dsi no tienes la tecla Meta). Eliminará solo una parte de la ruta a la vez.

Nykakin
fuente
31
Alt-d funciona para mí
ricab
8
En general, en el mundo de los teclados donde Meta no existe, Alt = Meta.
Nate CK
En el mundo donde tiene muchos teclados diferentes, un hecho conveniente y bastante útil es que Esc como prefijo también actúa como Meta.
tripleee
1
En resumen, agregue, por ejemplo, esto a su archivo $ HOME / .inputrc: "\ew": shell-kill-word eso hará que Alt-w adelante elimine una palabra, al igual que CTRL-w elimina una palabra hacia atrás (y a diferencia de Alt-d, que reenviará la eliminación, pero se detendrá en, p. Ej. a / or - y otros caracteres)
user964970
7

Probé los esc+ dy alt/ opt+ den OSX Mavericks y también funcionan allí.

visyoual
fuente
12
Option + dme da ∂ en OSX
Ivan Balashov
44
-1 OSX no es Ubuntu. Siéntase libre de agregar un comentario, pero esta no es una respuesta.
wjandrea
primero debe habilitar la casilla de verificación "usar opción como meta clave" en las preferencias del terminal (perfiles -> pestaña del teclado -> casilla de verificación)
nils petersohn
control + den mac Sierra
mfink
2
@IvanBalashov si está usando iterm, configure su clave de opción de permiso como esc +. Bajo Perfiles> claves
tessie