¿Cómo hago para que las teclas de flecha Ctrl avancen / retrocedan palabra por palabra en Cygwin bash?

97

En la instalación predeterminada de Cygwin, el uso de CTRL-FLECHA IZQUIERDA o CTRL-FLECHA DERECHA simplemente imprime 5C o 5D en lugar de omitir una palabra a la vez como se esperaba.

Las teclas Inicio / Fin funcionan correctamente, por lo que debería ser posible la reasignación.

Tom
fuente
Tenga en cuenta que esta pregunta se dirige a Cygwin, pero puede tener una aplicación general en sistemas Unix / Linux. Si está utilizando PuTTY y encuentra que las soluciones aquí no funcionan para usted, eche un vistazo a una pregunta específica sobre qué códigos usar para PuTTY .
palswim
Esto también me sucedió bajo un linux completo; siguiendo algunos consejos en línea, agregué un ~/.inputrcarchivo, que anulaba todos los valores predeterminados de Linux mint. Puede recuperarlos agregando $include /etc/inputrca la parte superior de su ~ / .inputrc (suponiendo que / etc / inputrc es su entrada de todo el sistema, que está en Linux Mint)
user208769

Respuestas:

134

Encontré una solución y la publiqué aquí para la posteridad.

Agregue las siguientes líneas a ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Cuando termine, puede presionar C-x C-rpara volver a leer el .inputrcarchivo de la sesión actual.

Aspectos a tener en cuenta si desea otras personalizaciones similares: use 5Ay 5Bpara las flechas hacia arriba y hacia abajo, y 2xpara las versiones desplazadas.

Las asignaciones de teclas "oficiales" se describen en el Manual de referencia de Bash , pero para una forma rápida de encontrar una asignación de teclas, en bash:

  1. tipo Ctrl+V
  2. escriba la secuencia de teclas que le interese (por ejemplo, Alt+ ). Esto imprimiría^[[1;3C
  3. quite el líder ^[y reemplácelo \epara hacer\e[1;3C
  4. coloque este valor en su .inputrcarchivo.
Tom
fuente
Algunos códigos de teclado no se muestran en absoluto como <kbd> Shift </kbd> + <kbd> Enter </kbd>. ¿Cómo encuentro estos códigos de teclado a través de Mintty / Windows / Cygwin?
CMCDragonkai
14

Puede volver a cargar el archivo .inputrc a través de:

bind -f ~/.inputrc

Fuente

Kdt
fuente
2
Esto es útil, pero en realidad no es una respuesta a la pregunta, ¿tal vez sería mejor como un comentario a otra respuesta?
Martin Thompson
Agregado a la respuesta de @ Tom arriba
dovetalk
7

En caso de que desee algo que funcione sin configuraciones de entorno personalizadas, por ejemplo, cuando trabaje en una cuenta compartida en un servidor o simplemente para limitar la cantidad de configuración personalizada que se está utilizando, Bash tiene funciones integradas para esto que funcionan en Cygwin.

Es decir, Alt+ fpara avanzar y Alt+ bpara retroceder.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

Costa
fuente
44
Gracias, aunque conozco esas claves y las uso. También uso las teclas de flecha cuando es conveniente y no quiero que arrojen códigos de escape en lugar de hacer lo sensato y mover el cursor.
Tom
0

Cuando usé rxvt con cygwin, encontré que la solución en este enlace funcionó para mí: control_arrow_keys_in_rxvt .

Agregue las siguientes líneas a ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word
Peter Tran
fuente
Es entonces cuando una capa adicional está cambiando las claves transmitidas (pero no responde la pregunta formulada).
Nikana Reklawyks
0

Esta solución también funciona en msys2consolas:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Simplemente coloque estas combinaciones de teclas en el .inputrcarchivo.

f0nzie
fuente