Uso 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 integrada Terminal.
Las combinaciones de teclas no parecen haber sido capturadas por nada antes o por Terminal, porque si paso a uno de mis servidores Linux, puedo usar Ctrl- ←/ →para saltar a la siguiente / anterior palabra en la línea de comando. Sin embargo, cuando pruebo esta combinación de teclas en bash en mi Macbook, obtengo "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?
Respuestas:
OS X utiliza el enlace de teclas emacs por defecto. Esto es cierto es prácticamente todas las aplicaciones en OS X, es bastante agradable. Significa que cosas como Ca y Ce son principio / fin de línea. También obtienes el ingenioso backward-word-kill con M-backspace, oh, y kill-line 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 reenvío / contraparte están vinculadas a M- → y M- ← de forma predeterminada.
Puede alterar este comportamiento cambiando la configuración de la Biblioteca GNU Readline para su cuenta. Esto tiene lugar en su
~/.inputrc
archivo. Puede obtener una gran lista de comandos enlazablesman readline
, así como en la documentación en línea como esta aquí. .Entonces, para responder a su pregunta, desea reasignar lo que hace Readline cuando ve que C- → y C- ← hacen lo que hace en su servidor Linux.
La sintaxis de un
~/.inputrc
archivo es muy sencillo de lo que quiere hacer:key-sequence: action
.Esto debería ser lo que necesita para obtener el comportamiento deseado:
Aquí hay otra página con enlaces útiles adicionales.
(Probablemente podría salirse con la copia / etc / inputrc de su caja de linux a su OS X ~ / .inputrc)
fuente
\e[1;5C
y\e[1;5D
también para activarforward-word
ybackward-word
.poner en las
~/.inputrc
siguientes líneas:fuente
En estos días parece que las secuencias de escape que Ctrl-Arrows genera en el 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 puede descubrir las secuencias de escape reales escribiendo
cat -v
la Terminal y presionando Ctrl-Flecha izquierda o Ctrl-Flecha derecha. Aquí hay una salida de muestra para mi propia Ctrl-Flecha izquierda:^[[1;5C ^[[1;5C
Para traducir a
.inputrc
jerga, reemplace el signo de escape^[
con\e
y pegue el resultado dentro de las comillas dobles.fuente
Como @ bhh1988 mencionó, la configuración de Mission Control evita que las teclas Ctrl-Keys trabajen con las teclas de flecha
bash
. No quería interferir con esos atajos, así que en su lugar uso la tecla Opción (es decir, Alt). Actualmente en Mojave usando un teclado alemán (no sé si eso es relevante) puse lo siguiente.inputrc
para usar Opción-flecha izquierda y Opción-flecha derecha para moverse entre las palabras.fuente
ACTUALIZACIÓN Ene 2020
En las versiones más recientes de OSX, el shell predeterminado es
zsh
. Por lo tanto, el encantamiento mágico para hacer que ctrl-arrowleft y ctrl-arrowright funcionen como se espera es el siguiente:(ponlo en tu
.zshrc
)fuente