Utilizo Ctrl- ←y Ctrl- →en todos los sistemas Linux en los que trabajo, pero estas combinaciones de teclas no funcionan en bash en mi Macbook Pro. Está ejecutando Snow Leopard y estoy usando la aplicación Terminal integrada.
Las combinaciones de teclas no parecen ser capturadas por nada antes ni por Terminal, porque si me dirijo a uno de mis servidores Linux, puedo usar Ctrl- ←/ →para saltar a la palabra siguiente/anterior en la línea de comando. Sin embargo, cuando intento esta combinación de teclas en bash en mi Macbook, aparece "C" para la flecha derecha y "D" para la flecha izquierda.
¿Alguna idea sobre cómo puedo hacer que estas claves funcionen en Darwin Bash?
Respuesta1
OS X usa el enlace de teclas de emacs por defecto. Esto es cierto en prácticamente todas las aplicaciones de OS X, es bastante bueno. Significa que cosas como Ca y Ce son el principio o el final de la línea. También obtienes la ingeniosa función de matar palabras hacia atrás con M-retroceso, oh, y matar la línea con Ck.
Esto debería significar que en su terminal las palabras hacia adelante/hacia atrás están vinculadas a Mf y Mb, respectivamente (M = Meta = alt/opción), sin embargo, ese no es el caso. En OS X, las palabras de avance/retroceso están vinculadas a M-→ y M-← de forma predeterminada.
Puede modificar este comportamiento cambiando la forma en que está configurada la biblioteca GNU Readline para su cuenta. Esto tiene lugar en su ~/.inputrc
expediente. Puede obtener una gran lista de comandos enlazables y man readline
en la documentación en línea comoesto aqui..
Entonces, para responder a su pregunta, desea reasignar lo que hace Readline cuando ve C-→ y C-← para hacer lo que hace en su servidor Linux.
La sintaxis de un ~/.inputrc
archivo es bastante simple para lo que quieres hacer: key-sequence: action
.
Esto debería ser lo que necesita para obtener el comportamiento deseado:
"\e[5C": forward-word
"\e[5D": backward-word
Aquí hay otra página.con enlaces útiles adicionales.
(Probablemente podrías salirte con la tuya copiando /etc/inputrc desde tu máquina Linux a tu OS X ~/.inputrc)
Respuesta2
ACTUALIZACIÓN enero 2020
En las versiones más recientes de OSX, el shell predeterminado es zsh
. Por lo tanto, el encantamiento mágico para que Ctrl-Flecha Izquierda y Ctrl-Flecha Derecha funcionen como se esperaba es el siguiente:
bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word
(ponlo en tu .zshrc
)
Respuesta3
poner en ~/.inputrc
las siguientes lineas:
"\e[5C": forward-word
"\e[5D": backward-word
Respuesta4
Estos días parece que las secuencias de escape que Ctrl- Arrowssalida en la terminal han cambiado. Esto es lo que funciona para mí a partir de hoy (finales de 2018):
"\e[1;5C": forward-word
"\e[1;5D": backward-word
Nota: siempre puedes descubrir las secuencias de escape reales escribiendo cat -v
en la Terminal y presionando Ctrl- Left Arrowo Ctrl- Right Arrow. Aquí hay un resultado de muestra para mi propio Ctrl-Flecha izquierda:
^[[1;5C
^[[1;5C
Para traducir a .inputrc
la jerga, reemplace el signo de escape ^[
con \e
y pegue el resultado entre comillas dobles.