¿Por qué fn- ⇧- →(u otros) hacen un hogar / final en la Terminal pero a ⌘- →funciona en cualquier otro lugar?
Entonces, para que quede claro, la pregunta es cómo hacer que Terminal tome Command+ ←y →para el hogar y el final.
Tan conveniente como sería, Terminal no puede proporcionar fácilmente la funcionalidad que usted solicita.
La razón es que los programas que se ejecutan dentro de Terminal tienen diferentes reglas para mover el cursor al principio / final de la línea, por ejemplo:
bash
(y otras conchas) usan CtrlAyCtrlEvi
usos 0y $/Shift4Otros programas pueden usar otras teclas. No existe una combinación de teclas universal para colocar el cursor al principio / al final de la línea.
Por supuesto, Terminal podría mantener una lista de combinaciones de teclas para una serie de programas comunes, verificar lo que se está ejecutando y enviar las teclas correctas para usted, o podría proporcionar un elemento de menú como Mover el cursor al comienzo de la línea dentro de Shell ⌘ ← y luego enviar CtrlAentre bastidores. Pero supongo que los ingenieros de Apple pensaron que si te aventuras en el territorio de CLI conoces sus idiosincrasias.
Como nota al margen, Terminal proporciona Option←y Option→que se comporta bash
como cabría esperar y mueve el cursor al comienzo de la palabra anterior / siguiente. Esto se debe a que estas combinaciones de teclas están asignadas a Escby Escb( man bash
para obtener más información, consulte la sección "Comandos para mover"). En vi
, por ejemplo, solo el último (tipo de) funciona (al final de esta respuesta le mostraré cómo configurar vi
para trabajar con Option←y Option→).
Pero gracias a Automator, AppleScript y bash alias puedes obtener ⌘←y ⌘→trabajar con bash
(y posiblemente otros shells) y vi
.
El primer paso es mapear ⌘←y ⌘→hacia CtrlAy CtrlE. En un segundo paso, le mostraré cómo configurar vi
para honrar CtrlAy CtrlE(que, como resultado, se hará vi
compatible con ⌘←y ⌘→).
Mapa ⌘←y ⌘→hacia CtrlAyCtrlE
En Terminal, vaya a Preferencias ...> Configuración> [su perfil activo]> Teclado:
Pulse +, seleccione "Cursor a la izquierda", "Control-Shift" como modificador y acción "Enviar texto:". Luego presione CtrlA( \001
aparecerá en el campo de texto) y confirme con OK:
(En una versión anterior de esta respuesta, utilicé "Shift" como modificador. Me di cuenta de que esta configuración entra en conflicto ⌘shift←, lo que muestra la pestaña Terminal anterior, si no la sueltas ⌘inmediatamente. Usando "Control-Shift" arregla eso.)
Ahora agregue una combinación de teclas para "Cursor derecho", pero presione CtrlE( \005
aparecerá en el campo de texto). Confirmar con OK.
Abra Automator (por ejemplo, presione ⌘spacepara que aparezca Spotlight y escriba Automator ), seleccione Archivo> Nuevo y elija Service
:
Arrastre Run AppleScript
al panel derecho:
Escriba el siguiente script:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 123 using {shift down, control down}
end tell
end tell
end run
y guardar como Move Cursor to Beginning of Line
:
Repita los pasos 4. a 6. con este script:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 124 using {shift down, control down}
end tell
end tell
end run
y guardar como Move Cursor to End of Line
:
Así es como se ve Terminal> Servicios ahora:
Configurar vi
para honrar CtrlAyCtrlE
Abre .bashrc
con tu editor favorito y agrega esta línea:
alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'
Los primeros dos map
comandos le dicen vim
a interpretar ControlEy ControlAcomo $y 0, que mueven el cursor al principio o al final de la línea, respectivamente.
Los dos últimos map
comandos le indican vim
que mueva el cursor una palabra a la vez como esperaría al presionar option←y Option→.
Advertencias
Notará que hay un breve retraso entre el momento en que presiona ⌘←o ⌘→y el momento en que el cursor se mueve realmente.
Tenga en cuenta que solo funcionará para programas que honren CtrlA/ CtrlE, por lo que es posible que aún desee aprender las combinaciones de teclas específicas de cada programa que utiliza en Terminal.
(Probado en macOS Sierra 10.12.4)
⌘
vi
cuál es una aplicación completamente diferente que el terminal.Por supuesto que es posible.
En primer lugar, puede usar la herramienta gratuita "DoubleCommand" si tiene un teclado de Windows con teclas HOME / END para que se comporten como deberían (principio / fin de línea).
En segundo lugar, para el terminal específicamente, vaya a las preferencias, Teclado, edite el icono / tecla que se parece a una flecha apuntando hacia arriba a la izquierda, seleccione "enviar texto" y escriba ctrl + a. ¡Hecho!
Lo mismo para el botón de finalización.
Si no tiene un teclado de PC, puede hacer lo mismo con otras combinaciones de teclas.
fuente