Reasignación de claves en iterm2

15

Estoy tratando de reasignar algunas de las combinaciones de teclas predeterminadas en iTerm2, y me gustaría entender lo que sucede cuando enlazo las teclas a "Enviar códigos hexadecimales".

Una publicación anterior me ayudó a comenzar a reasignar las combinaciones de teclas ctrl-a y ctrl-e a cmd-left y cmd-right, respectivamente, pero también me gustaría reasignar otras combinaciones de teclas. ( Enlace a la publicación anterior de Stackoverflow ).

Tengo una vaga comprensión de que hay códigos hexadecimales involucrados, pero estoy en un punto en el que no puedo entender a dónde ir después para comprender qué está pasando o qué hacer.

Comunidad
fuente
No tiene nada que ver con bash. Etiqueta eliminada

Respuestas:

16

Esos códigos hexadecimales son solo secuencias de bytes. Por ejemplo, mapear una combinación de teclas para 0x66 0x6f 0x6fque se inserte foo. 0xc3 0xa4insertaría ä si usa UTF-8. 0x1b 0x1b 0x5b 0x43significa escape escape [ C.

Algunas secuencias de bytes como las secuencias de escape ANSI e incluso bytes individuales como los caracteres de control ASCII tienen significados especiales en los terminales.

Para hacer que ⌘ ← y ⌘ → vayan al principio y al final de la línea, puede asignarlos a 0x01 (^ A en notación de intercalación) y 0x05 (^ E en notación de intercalación):

  • ⌘ ←: Enviar códigos hexadecimales: 0x01
  • ⌘ →: Enviar códigos hexadecimales: 0x05

Puede hacer que ⌥⌦ elimine una palabra hacia adelante asignándola a \ed:

  • ⌥⌦: Enviar ^ [d

Cambiar ⌥ ← y ⌥ → a \eby \efen las preferencias de iTerm también los cambiaría en programas que no admiten la combinación de teclas readline o emacs. Otra opción es agregar esto a ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Puede ejecutar ready presionar combinaciones de teclas para ver qué caracteres insertan. Por ejemplo, ⌥ ← inserta ^[^[[Dpor defecto, donde ^[está escape en notación de intercalación .

Consulte también http://code.google.com/p/iterm2/wiki/Keybindings .

Lri
fuente
Gracias. Me encuentro con esta respuesta cuando busco una solución para mi pregunta aquí . ¿Cómo puedo buscar el código hexadecimal para una combinación de teclas específica? (en mi caso estoy interesado en las combinaciones Ctrl+Alt+<char>con <char>ser i, j, k, ly u)
Amelio Vázquez-Reina
6

Sugeriría instalar Key Codes ($ 0) por Many Tricks y descubrir los atajos por ti mismo.

Por ejemplo, si desea reasignar el acceso directo predeterminado para (reenviar) eliminar un carácter, que es Ctrl-D ( ⌃D), para que sea tan simple como presionar la tecla de eliminación directa ( ), debería ...

  1. Abre la aplicación y presiona Ctrl-D

    Ejemplo de códigos clave

  2. De vuelta en iTerm 2, agregue el acceso directo Unicode en iTerm> Preferencias> Teclas

    iTerm envía códigos hexadecimales

Nota: No lo copie y pegue, simplemente escriba Unicode sin espacios.

Patricio
fuente
2

La mejor manera que encontré fue enviar códigos de teclas (como se describe en @pattulus o usar enlaces de teclas vim.

Nota sobre los códigos clave: en realidad, no puede hacer que funcione enviando la cadena Unicode como se describió anteriormente, debe enviar el modificador y la clave juntos en caso de Control+ Dnecesita enviar esto como código: ¿ 0x840101 0x4dónde 0x840101está el modificador de la tecla de control? y se puede obtener a través del código clave .

Nota sobre el envío como secuencia vim : como se describe en la documentación de iTerm2 , puede enviar un código de clave en formato de enlaces vim como \<C-d>para enviar Control+ D(tenga en cuenta que \es importante).

Personalmente, prefiero la vinculación de teclas vim porque es más legible y luego comprenderá lo que ha hecho.

ExistMe
fuente
1

Echa un vistazo a Karabiner .

Dentro de esta herramienta, puede crear asignaciones personalizadas clave que son específicas de las aplicaciones. Viene con algunas herramientas para ayudar con eso.

bdecaf
fuente