Eliminar entrada de nuevo a la última barra diagonal

16

Muy a menudo estaré revoloteando entre varios archivos en un servidor. Ejecutaré los siguientes comandos de ejemplo en secuencia:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

Para pasar de un nanocomando al siguiente, actualmente presiono Upy Backspacepara reemplazar el último segmento de la ruta. El problema con esto es que soy muy, muy vago.

¿Hay un método abreviado de teclado (o Bashism) que puede:

  • Ser reemplazado por la última ruta utilizada (con un bit adicional al final)
  • Eliminar en la línea actual (por ejemplo, después de presionar Up) de nuevo a la última/
Oli
fuente
1
No estoy seguro de qué quieres decir exactamente, pero creo que en la primera parte puedes usar alt+ ..
Sparhawk
@Sparhawk Alt + .se usa para otra cosa .
Radu Rădeanu
@ RaduRădeanu Sí, tal vez no entiendo la pregunta. Pensé que "Ser reemplazado por la última ruta utilizada (con un bit adicional al final)" significaba lo que alt+ .hace.
Sparhawk
@Sparhawk Una vez más, uno de esos atajos que es realmente útil una vez al mes y que parece que no puedo guardar en la memoria. En combinación con alt-backspace, es bastante útil para ejecutar archivos similares a través de diferentes comandos.
Oli
@Oli Tiendo a usarlo un poco, ¡pero siempre olvido cómo moverme hacia el otro lado !
Sparhawk

Respuestas:

21

Creo que estás buscando el acceso directo Alt+ Backspace.

Después de presionar Upesto debería eliminar de nuevo al carácter /o spacecarácter anterior .

Sylvain Pineau
fuente
77
AHORA SOY IMPARABLE! (Editar: juro que aprendo y olvidé este atajo al menos diez veces al año)
Oli
3
¿Qué debería hacer esto? En mi terminal no parece hacer nada diferente de lo normal backspace.
Bakuriu
1
@Bakuriu Este acceso directo debería ser el predeterminado. Si desea saber a qué está asignado en su sistema, ejecutebind -P | grep '^backward-kill-word'
Sylvain Pineau
1
@Bakuriu Lo mismo aquí, estoy en Mac.
laike9m
9

Para detectar el enlace de línea de lectura que mata una palabra hacia atrás como desee, puede usar el siguiente comando en su terminal:

bind -p | awk '/kill/ && /word/ && /backward/'

En una instalación predeterminada de Ubuntu, el resultado podría ser:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

La segunda línea parece no tener importancia en este punto, así que tratemos de ver qué significa la primera línea. Por lo que entiendo, la backward-kill-wordfunción readline que de hecho borrar todos los caracteres hasta que el carácter especial anterior ( /, ;, ,etc.) se une a la \e\C-hsecuencia de teclas. Ahora, en esta secuencia \e representa la Escclave, \C- la Ctrlclave, y \C-hrepresenta Ctrl+, hque es equivalente en este caso con la Backspaceclave.

Por lo tanto, está buscando un atajo de teclado Esc+ Ctrl+h que es equivalente a Esc+Backspace y que, debido al comportamiento de xterm que hace que la Alttecla actúe como un metacarácter y los metacaracteres se convierten en una secuencia de dos caracteres con el carácter precedido por Esc(ver man xterm) , es equivalente a Alt+Backspace .

Ahora, si no le gusta y continúa olvidándolo, puede usar el siguiente comando para crear un nuevo atajo, digamos Esc+ w, para su propósito:

bind '"\ew": backward-kill-word'

Para que este nuevo acceso directo sea persistente todo el tiempo para todos los comandos que usan readline, agregue la siguiente línea a su ~/.inputrcarchivo:

"\ew": backward-kill-word

Ver help -m bind | sensible-pagerpara más información.

Radu Rădeanu
fuente
2
Buena respuesta. Más comúnmente, encerraría toda la configuración entre comillas simples con el comando bind; bind '"\ew": backward-kill-word', pero eso no es nada. Y puede ser vale la pena mencionar que también se puede poner "\ew": backward-kill-worden ~/.inputrc, en cuyo caso otros comandos que el uso de readline tendrá también que la unión, por ejemplo, si se habilita readline en el pitón shell interactivo, que la unión también se aplicará allí.
geirha
@geirha Sí, estoy enterado de lo que dijiste, pero pensé que el OP sabe cómo manejar esto. De todos modos, ahora me doy cuenta de que mi respuesta no es tan útil para el OP (solo quería recordar el acceso directo), pero espero ser útil para otros usuarios de este sitio y para esto edité mi respuesta agregando su observación. Gracias.
Radu Rădeanu
0

Otra combinación de teclas es:

Alt+ Bentonces Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bentonces Alt+D

Esto elimina la última palabra sin eliminar caracteres especiales entre palabras.

αғsнιη
fuente