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.
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
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.
Agregar lo siguiente a ~/.zshrc funcionó para mí en OSX Mountain Lion.
bindkey -e
bindkey '[C' forward-Word
bindkey '[D' backward-Word
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
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!
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
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