Terminal OS X equivalente de Ctrl + Izquierda / Ctrl + Derecha


19

En Windows y Linux siempre podría presionar ctrl+ o ctrl+ para saltar una palabra a la izquierda o derecha en la terminal. En los editores de texto parece que + / funciona, pero no hay dados en el terminal. Busqué en Google y no encontré nada, excepto una página de Wikipedia que dice que + B/ Fhace el trabajo, pero todo lo que hace es imprimir caracteres ∫ y ƒ en mi terminal (o ı y Ï si lo sostengo ). ¿Algunas ideas?

Respuestas:



12

Esto también me estaba volviendo loco, sin embargo, no quería una solución específica para Terminal ya que no uso Terminal, y poder SSH en mi caja OSX también tenía que usar las combinaciones de teclas correctas.

Además, personalmente, no me importaba la clave como se discutió anteriormente; Quería mantener la combinación ctrl+ / a la que estoy acostumbrado en Linux.

Para resolver este problema, agregué lo siguiente a mi ~/.profile:

bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Tenga en cuenta que los dos primeros se aplican a bash en la Terminal ; los dos últimos se aplican a bash en iTerm2 y conexiones ssh entrantes . No me preguntes por qué la emulación del teclado es diferente;)

Para el registro, pude encontrar cuáles eran realmente los códigos de teclas gracias a una sugerencia de esta respuesta de stackoverflow : puede ejecutar cat > /dev/nullpara monitorear los códigos de teclas exactos enviados durante una combinación de teclas.

(Tenga en cuenta que para mí, cuando ejecuto cat > /dev/nully presiono ctrl+, se produce ^[[1;5D. Su código clave exacto puede diferir , pero el primero ^[se representa como \e, como se muestra en mi código de ejemplo).

Por cierto, si desea ver todas las combinaciones de teclas bash activas, ejecute bind -p.


Me gusta usar xxdpara examinar la entrada del teclado. Puede ver el carácter que se muestra a medida que lo escribe, luego xxdemite el valor en hexadecimal cuando escribe return.
Chris Page

¡Perfecto! Justo lo que estaba buscando :) Nunca tuve la suerte de hacer la configuración "específica de la aplicación" anterior, ¡pero esto simplemente funciona!
bisko

Asegúrese de que control + izquierda / derecha no estén asignados a "espacios de cambio" en sus sysprefs> teclado> accesos directos> exposición. No tenía otros espacios abiertos, así que parecía que la entrada de mi teclado no funcionaba.
sudo

6

A partir de Mac OS X Lion 10.7, Terminal asigna - / a esc+ B/ Fde forma predeterminada, por lo que ahora está integrado para bash y otros programas que utilizan estas combinaciones de teclas compatibles con emacs.


5

Si sabe cómo usar vi, también puede activar el modo de edición de línea vi usando set -o visu .bash_profilelínea de comando o en cualquier momento. Luego puede cambiar entre el comando vi y los modos de inserción. Entonces puede presionar escape, luego use los comandos vi para navegar por la línea:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Una vez que llegue a la posición correcta, puede usar los otros comandos vi para ingresar a los modos insertar o agregar, o eliminar caracteres uno por uno, etc.


Nunca supe que podría usar 0 para el inicio de la línea, siempre usé ^
Jason Salaz

1
@vxjasonxv: sí, ^ se mueve al primer carácter que no sea un espacio en blanco, 0 se mueve a la primera columna (que probablemente ya notó, pero pensé que lo lanzaría allí para otros: P)
Robert S Ciaccio

1
OH WOW, ESTO ES MEJOR, ¡ aún no me había dado cuenta! Oh hombre, esa funcionalidad (primer espacio no en blanco) de ^ siempre me molestó. Gracias.
Jason Salaz el

Por supuesto, ESC ^es genial cuando lo necesitas, solo es molesto cuando quieres hacer algo completamente diferente :)
ocodo

3

Abra la terminal, vaya a preferencias, teclado. En la lista encontrará "cursor Ctrl a la derecha" y "cursor Ctrl a la izquierda".
Cambie sus acciones asignadas a "\ 033f" y "\ 033b" respectivamente, y podrá usar ctrl+ y ctrl+ para moverse, sin perder su tecla alt.


2

Parece que esc+ By esc+ Festán asignados de forma predeterminada para ir al principio y al final de las palabras. Sin escembargo , para mi sistema no puede mantener presionado, sino que tiene que volver a presionarlo para cada palabra.


1
Esc no es un modificador, sólo va a "Escape" modo cuando se presiona, consideramos que es una forma modal de hacer las cosas, a diferencia de shift / ctrl / meta, etc (en el esquema ReadLine cosas de todos modos.)
ocodo

0

La última versión del sistema operativo asigna esto a espacios. Incluso si tiene Spaces desactivados, las teclas de acceso rápido aún pueden cortocircuitarse en esta ubicación oculta:

Teclas de cursor de Terminal.app: deshabilitar Preferencias del sistema -> Accesos directos -> Control de misión -> Mover a la izquierda un espacio

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.