Bash: ¿Cómo muevo mi cursor a la izquierda palabra por palabra?

14

En OSX, puedo mantener presionada la optiontecla y presionar la tecla de cursor izquierda hasta llegar a la palabra que necesito editar (o en Vi puedo presionar b, pero no he podido encontrar la manera de hacerlo en la Terminal todavía...

japonés
fuente
Puede ver la lista completa de enlaces de línea de lectura en esta página , incluidas las instrucciones sobre cómo personalizar sus propios enlaces.
jasonwryan

Respuestas:

26

Para establecer el enlace de teclas: Primero debe averiguar qué códigos de tecla crea la secuencia de teclas Ctrl+ Left. Simplemente use el comando catpara desactivar cualquier interferencia con las combinaciones de teclas existentes y luego escriba la secuencia de teclas. En mi sistema (Linux), esto se ve así:

$ cat
^[[1;5D

Presione Ctrl+ dpara salir del gato. Ahora ha descubierto que Ctrl-Left emite 6 códigos clave:

  • Escape (^ [)
  • [
  • 1
  • ;
  • 5 5
  • re

Ahora puede emitir el comando de enlace:

bind '"\e[1;5D": backward-word'
daniel kullmann
fuente
66
Puede agregar `` "\ e [1; 5D": backward-word '' en $ HOME / .inputrc para obtener un efecto permanente si lo desea.
llhuii
@llhuii +1, ¡olvidé mencionar eso!
daniel kullmann
2
¡+1 para la forma más flexible de vincular combinaciones de teclas arbitrarias en cualquier lugar!
Irfy
14

La función bash que quieres es backward-word. Puede ejecutar bind -q backward-wordpara obtener una lista de teclas vinculadas a esa función. Un enlace común es Esc+b

Además, muchos terminales admiten Ctrl+ Left(la misma tecla de acceso rápido que puede usar en X para saltar hacia atrás por palabra)

Michael Mrozek
fuente
1
Ok, regresa backward-word can be invoked via "\eb".pero ¿cómo ato control + Izquierda en lugar de Esc + b? Además, un inconveniente de Esc + b que ya puedo ver es que tengo que soltar la tecla Esc cada vez que puedo retroceder una palabra, ¿no hay una mejor manera?
nipponese
1
¿Hay una mejor manera? Naturalmente: set editing-mode vi:)
jasonwryan
3
@nipponese "esc b" también se puede usar en el teclado como ALT-b. Es posible que esto deba ser específicamente el alt izquierdo o derecho dependiendo de su configuración, así que intente con ambos.
Random832
8

El atajo de teclado predeterminado en Bash para backword-wordes Alt+ b. El mismo resultado se puede lograr con Esc+ b. Deberías probarlos antes de editar tus combinaciones de teclas.

Use el bindcomando para editar u bind -q [name]obtener la combinación de teclas actual de una acción específica.

Marius Cotofana
fuente
2
... y hacia adelante -Alt + f
Putnik