He encontrado muchas pistas aquí: https://coderwall.com/p/a8uxma/zsh-iterm2-osx-shortcuts
Esto es lo que pongo en mi .zshrc
para arreglar las cosas.
bindkey "\033f" forward-word
bindkey "\033b" backward-word
bindkey "\033[H" beginning-of-line
bindkey "\033[F" end-of-line
Junto a estos ajustes del teclado del terminal:
Por alguna razón, el modificador de la tecla de control (^) se puede establecer, pero no activa los códigos en el terminal. Así que sólo estoy usando la opción y el cambio.
Encontré una solución similar aquí que menciona que puedes ver los códigos de las llaves ejecutando cat
. https://stackoverflow.com/questions/12382499/looking-for-altleftarrowkey-solution-in-zsh
Al principio utilizaba los códigos de las llaves que quería. Eso fue un error, porque aunque funcionaron en mi mac local, no funcionaron cuando me conecté por SSH a una máquina linux. Usando less /etc/inputrc
en el bash remoto encontré estos accesos directos existentes:
# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
Además, mi bash local tenía una configuración diferente. Para averiguarlo utilicé
bash-3.2$ bind -p | grep of-line
"\C-a": beginning-of-line
"\eOH": beginning-of-line
"\e[H": beginning-of-line
"\C-e": end-of-line
"\eOF": end-of-line
"\e[F": end-of-line
Lo que me hizo decantarme por la configuración del teclado de la terminal que ves arriba. Porque funcionaban en las 3 configuraciones (zsh local, bash local, bash remoto).