Bash readline borrando hasta la barra anterior

15

En el modo bash emacs, ¿hay alguna forma de eliminarlo hasta el carácter de barra diagonal anterior? Por ejemplo, si ingresé el comando cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathy solo quiero eliminar el reallylongincorrectfolder. ¿Hay algún acceso directo? Este es un escenario muy comandante para mí en bash. Algo como dF<char>en vi?

Woodstok
fuente

Respuestas:

9
bind -P |grep unix-filename-rubout

Para probar la combinación de teclas con, por ejemplo, Ctrl- b:

bind \\C-b:unix-filename-rubout

Para uso permanente, agréguelo a ~/.inputrc

usuario1338062
fuente
2
Para añadirlo a ~/.inputrc, añadir una línea como esta en el archivo: "\C-b": unix-filename-rubout. Para ver el efecto, deberá iniciar un nuevo shell bash (o ejecutar algún otro programa que use la biblioteca de línea de lectura GNU).
Croad Langshan
11

Alt- Backspacey Ctrl- wcomúnmente se asignan a backward-kill-word, lo que hace eso. Si desea averiguar a qué está asignado en su sistema (si corresponde), ejecute bind -P | grep '^backward-kill-word'.

Según lo explicado por @Barmar , esto es diferente de unix-word-rubout, lo que lleva al límite de espacio anterior.

l0b0
fuente
Pero eso matará toda la palabra ... Quiero matar solo hasta el último corte
woodstok
Elimina solo hasta la última barra aquí. La barra diagonal es uno de los separadores de palabras predeterminados. ¿Estás seguro de que estás usando Bash?
l0b0
Lo malo ... Alt-Retroceso lo elimina hasta la última barra. ¿Cuál es la diferencia entre ALt-BackSpace y Ctrl-W?
Woodstok
3
Ctl-w normalmente está obligado a unix-word-rubout: matar la palabra detrás del punto, utilizando espacios en blanco como límite de la palabra.
Barmar
2
Esto no funciona exactamente. "Las palabras están compuestas de caracteres alfanuméricos (letras y dígitos)". Por lo tanto, se detendrá en mucho más que solo cortes. El valor predeterminado unix-filename-ruboutes un poco mejor, ya que se detendrá en el espacio en blanco y se reducirá.
Sparhawk
6

Pon esto en tu .inputrcy comienza un nuevo shell:

C-b:unix-filename-rubout

Ctrl- bahora borra hacia atrás a la siguiente barra inclinada.

¡Nirvana!

No se olvide Ctrl- XCtrl- Epondrá en marcha su editor para que pueda editar una línea de comandos complicados cómodamente.

Greg Bell
fuente