web-dev-qa-db-esp.com

Buscando la solución ALT + LeftArrowKey en zsh

Recientemente cambié de bash a zsh, sin embargo extraño mi Alt+LeftArrowKey y Alt+RightArrowKey para ir y venir una palabra a la vez.

Ahora mismo, si presiono Alt+LeftArrowKey Vuelvo un par de cartas y luego me quedo atascado. No voy a ir más hacia atrás y no volveré al final de la línea con Alt+RightArrowKey como yo esperaria Ni siquiera puedo usar las teclas de flecha para ir al final de la línea, solo a la segunda para durar. No se pueden ingresar nuevos caracteres en la línea, ni tampoco se eliminan.

¿Cómo puedo recuperar mi amado atajo?

Estoy en Mac OS X usando Terminal si eso es importante.

89
Mads Ohm Larsen

Ejecute cat luego presione las teclas para ver los códigos que le envió su acceso directo.
(Prensa Ctrl+C para matar el cat cuando hayas terminado.)
Para mí, (ubuntu, konsole, xterm) presionando Alt+ envía ^[[1;3D, así que pondría en mi . zshrc

bindkey "^[[1;3C" forward-Word
bindkey "^[[1;3D" backward-Word

(En realidad prefiero usar Ctrl + flecha para mover palabra por palabra, como en un cuadro de texto normal bajo Windows o linux gui.)

Pregunta relacionada: Arreglar la configuración de las teclas (Inicio/Fin/Insertar/Eliminar) en .zshrc cuando se ejecuta Zsh en el emulador de terminal Terminator

176
lolesque

Para cualquier persona que use iTerm, independientemente de Shell

Todas las soluciones ofrecidas aquí toman un enfoque hacia atrás en mi opinión. Básicamente, le está diciendo a su Shell que escuche una secuencia esc u otro enlace de teclas que haya establecido en su terminal, lo que crea problemas de compatibilidad cuando cambia shells (si hace SSH en otro Shell, cambie de BASH a ZSH, etc. y perderá). algunas, si no todas sus combinaciones de teclas).

La mayoría de los shells tienen un conjunto de secuencias predeterminadas que vienen pre-enlazadas. Además, aunque no son 100% consistentes, están lo suficientemente cerca. Por lo tanto, la forma más sencilla que he encontrado para crear un enlace de teclas para una acción en particular en el Shell es decirle a su aplicación de terminal que se enlace a los enlaces de teclas predeterminados que son consistentes entre los shells.

Escribí una solución de compresión para que su terminal responda lo más cerca posible de las combinaciones de teclas nativas de mac aquí

Abra las preferencias de iTerm +, y navegue a la pestaña Profiles (la pestaña Keys se puede usar, pero agregar el enlace de teclas a su perfil le permite guardar su perfil y sincronizarlo en varias computadoras) y la keys sub-tab e ingresar lo siguiente:

Mueve el cursor una palabra a la izquierda

+ Enviar códigos hexadecimales: 0x1b 0x62

Mueve el cursor una palabra a la derecha

+ Enviar códigos hexadecimales: 0x1b 0x66

Y eso debería darle el comportamiento deseado, no solo en ZSH, sino también si utiliza SSH en un servidor que ejecuta BASH, irb/pry, nodo, etc.

134
Travis

Agregar lo siguiente a ~/.zshrc funcionó para mí en OSX Mountain Lion.

bindkey -e
bindkey '[C' forward-Word
bindkey '[D' backward-Word
63
Rob Sawyer

En MacOS High Siera 10.13.6 o Mojave 10.14.2 y usando iTerm2 con ZSH Para moverme de las palabras, tengo que poner así:

bindkey "\e\e[D" backward-Word
bindkey "\e\e[C" forward-Word

Otra solución no funciona bien

8
Vetalll

Aunque no responde estrictamente a su pregunta, el enlace predeterminado para forward-Word y backward-Word son alt-f resp. alt-b.

Esto funciona en todas partes, no requiere que salga de la fila de inicio y tiene una propiedad mnemotécnica Nice (f = forward, b = back), a la vez que es consistente con ctrl-f y ctrl-b siendo forward-character y backward-character.

Saque sus teclas de flecha!

6
0x89

En Mavericks (10.9.4) el código es 1; 5 ... así que para enlazar alt con flechas tengo mi .zshrc usando esto:

bindkey "^[[1;5C" forward-Word
bindkey "^[[1;5D" backward-Word

Puede usar CTRL + V y luego el comando que desea usar

en Yosemite usar la solución de Rob

1
ZeoS

Para hacerlo funcionar, utilicé esta respuesta , sin embargo tuve que intercambiar los códigos (izquierda <-> derecha)

⌥ + ← Enviar códigos hexadecimales: 0x1b 0x66
⌥ + → Enviar códigos hexadecimales: 0x1b 0x62

y agrega lo siguiente a mi ~/.zshrc

bindkey -e
bindkey "^[b" forward-Word
bindkey '^[f' backward-Word
0
iRonin