Hacer que iTerm traduzca 'meta-key' de la misma manera que en otros sistemas operativos

179

En bash shell con emacs key -inding, puede usar combinaciones de teclas como Mf, Mb para mover una palabra hacia adelante o hacia atrás en el indicador de shell respectivamente. Por lo general, la meta clave se asigna a la tecla Alt en Windows y Linux. Sin embargo, en iTerm, no pude encontrar una manera de asignar esta meta clave a la tecla Opción o Comando en mi MacBook Pro.

Parece que en OS X, la meta clave está asignada por defecto a la tecla ESC. Entonces puede usar ESC-f, ESC-b en iTerm. Sin embargo, la tecla ESC aparentemente no es práctica de usar. Además, iTerm tiene una opción que le permite modificar la asignación para la meta clave (Marcadores> Perfiles> Perfiles de teclado> Global> Opción como ...), esta configuración no parece funcionar en absoluto.

Por lo tanto, si alguien sabe cuál es la solución a este problema, hágamelo saber.

He actualizado a la última versión, 0.9.6.1012, y este comportamiento aún persiste.

Editar: alguna aclaración a mi pregunta. La vinculación de teclas de la que estoy hablando es para bash shell, no en emacs. Simplemente sucede que, por defecto, bash shell también usa la misma combinación de teclas que emacs.

ejel
fuente
Después de jugar con este problema por un tiempo y no puedo encontrar una solución. Me rendí y me cambié a la Terminal ahora.
ejel
2
no olvides que iterm2 ya existe y que todo está bien allí =)
holms

Respuestas:

207

Cmd+., Profiles, KeysY seleccione Left option Key acts as: +Esc.

Funciona para mí en emacs, aunque no estoy seguro de si tendrá otros efectos no deseados.

Sorin
fuente
Intenté Option Key como ... con todas las opciones, pero ninguna de ellas me funciona en bash shell. Solo muestra "?" cada vez que presiono la combinación de teclas meta.
ejel
2
Parece que su idioma de entrada debe ser EE. UU. Para que funcione la opción + ESC. + ESC no funcionaba para mí cuando tuve el método de entrada japonés / Romaji seleccionado, pero comenzó a trabajar una vez que cambié el idioma de entrada a los Estados Unidos
Dominic Cooney
2
Preferencias, Perfil, Teclas y elija la opción Izquierda La tecla actúa como: + Esc. Entonces tendrá la tecla de opción izquierda Y la tecla Esc como tecla meta. Eso es lo que sucedió en mi caso.
cgl
Con iTerm 2, esta parece ser la opción recomendada.
ejel
44
Para mi teclado externo, tenía que configurar las teclas de opción izquierda y derecha para usar Esc+, aunque estaba usando la tecla de opción izquierda, todavía imprimiría caracteres extraños. Esto puede suceder porque uso la opción Modificadores de teclado en la configuración del Teclado Mac para cambiar las teclas.
grego
130

Vaya a Marcadores> Administrar perfiles . Luego seleccione Perfiles de teclado> Global y elija la tecla Opción como Meta . Esto funciona para mí en la versión 0.9.6.1201.

Dag Høidahl
fuente
2
Tuve que cambiar la entrada xterm (OS X) en lugar de global, pero ahora está funcionando.
Jason Axelson
No sé por qué en mi máquina la configuración está rota en 0.9.6.1201 y varias otras compilaciones que probé. Sin embargo, funciona con la última versión 0.9.6 y 0.10. Por lo tanto, no debería ser un problema ahora.
ejel
11
en iTerm2 esto funcionó solo después de redefinir las teclas de acceso directo de perfil para alt+ ->y alt+ <-para enviar secuencia de escape + f/ brespectivamente.
amirnissim
Tuve que abrir una nueva sesión de iterm para que se
iniciara
@SridharRatnakumar también funciona para iTerm
Krzysztof Wende
31

En la barra de menú Iterm2 => Preferencias => Perfiles, elija la pestaña de teclas y seleccione

tecla de opción izquierda actuar como + Esc

ingrese la descripción de la imagen aquí

trabajó para mí también en irssi.

anquegi
fuente
Excelente, esto también funciona en la combinación de iTerm2 + tmux
TheJavaGuy-Ivan Milosavljević
5

Uso iTerm2 , y para mí, esta respuesta solo resolvió parcialmente mi problema:

Cmd+ ,=> Perfiles => Teclas y elija la opción Izquierda La tecla actúa como: + Esc .

ingrese la descripción de la imagen aquí

Además de eso, tuve que ir a Cmd+ ,=> Perfiles => Teclas y en la lista de Asignaciones de teclas encontrar ambas combinaciones de teclas : ingrese la descripción de la imagen aquíy ingrese la descripción de la imagen aquí, hacer doble clic en ellas y cambiar sus accesos directos a lo siguiente:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

* Asegúrese de seleccionar la acción Enviar secuencia de escape .

M. Demianchuk
fuente
Esto es realmente útil. ¡Muchas gracias hermano!
LeOn - Han Li
4

Ir a la resurrección de zombis aquí, pero por el bien de la posteridad.

Esta publicación lo hizo funcionar como lo deseas para mí, para Mb y Mf, mientras mantengo 'Option Key as Meta' configurado para que no sacrifiques un modificador (personalmente tengo asignaciones de vim usando meta).

En resumen, en su Perfil de teclado global, agregue dos nuevas asignaciones con configuraciones:

  1. Clave como código hexadecimal, valor de 62 para b, 66 para f ( man ascii)
  2. Modificador como Opción
  3. Acción como secuencia de escape de envío, valor bof

Lo único que aún extraño de Terminal.app es Opt-Backspaceeliminar por palabra. Hay otras soluciones para eso, pero solo estoy tratando de entrenarme para usar Ctrl-w.

ches
fuente
Puede ser una nueva característica desde esta respuesta, pero puede asignar un acceso directo de clave global para enviar Ctrl-wcuando Opt-Backspacese presiona.
Steve Buzonas
4

Es más fácil en iTerm2. Vaya a preferencias-> marcador-> teclado y seleccione Opción envía + ESC. En iTerm2 puede configurar las teclas de opción izquierda y derecha por separado, así que recuerde cambiar ambas si eso es lo que desea. Enlace para iTerm2: http://sites.google.com/site/iterm2home/

Jorge
fuente
2

Vaya a Marcadores> Administrar perfiles. Luego seleccione Perfiles de teclado> Global y elija la tecla Opción como + ESC.

Funciona en iTerm Build 0.9.5.0611 y Build 0.9.6.20090415


fuente
Hmm La configuración parece estar rota en mi máquina con estas dos versiones también. Sin embargo, los últimos 0.9.6.20090928 y 0.10 funcionan como se esperaba.
ejel
2

También encontré alguna solución en stackoverflow, solo vaya al perfil del teclado y en la tecla de opción "Cambio global" como "+ ESC

eso funciona para mí perfectamente =) por cierto, existe un parche de iterm también mira aquí: http://www.emacswiki.org/emacs/EmacsForMacOS

holms
fuente
0

Intente "exportar LANG = C". No soy un experto en emacs, pero descubrí que esto permite que emacs en OS X reconozca la tecla Opción como la tecla Meta en iTerm,


fuente
0

No sé acerca de iTerm, pero puedes hacerlo en Terminal. Las instrucciones se pueden encontrar aquí:

Emacs en las combinaciones de teclas Leopard de Mac OS X

Kyle Cronin
fuente
Gracias. Soy consciente de que puedo hacer eso en la Terminal. Solo quiero lograr el mismo resultado en iTerm. Por cierto, lo que estoy buscando es la asociación de teclas en bash shell, no en emacs. Simplemente sucede que bash shell también usa el enlace de teclas emacs.
ejel
0

Esto es lo que funcionó para mí: Marcadores> Administrar perfiles> Perfiles de teclado> Global / xterm> Tecla de opción como + Esc. Con esto, puedo usar Opción + Entrar en Midnight Commander y el nombre del archivo / directorio actualmente seleccionado aparece en la cadena de comandos, como debería. La tecla Opción como Meta no funcionó para mí. Mi versión de iTerm es 0.10.

Mikhail en YugaByte
fuente