2011-11-22 12 views
15

Me di cuenta de que iTerm2 ofrece la característica muy conveniente de usar "Opción clave como + ESC" (o como meta, pero aparentemente eso está obsoleto)."M-" enlaces en vim en iTerm2/Terminal no funcionan

Probé ambos y la tecla de opción funciona como se esperaba en Bash (modo set -o emacs) y Emacs, pero no en Vim. Por lo tanto, no puedo usar ningún enlace "M". Lo que he encontrado es que:

  • si fijo opción de "+ ESC", vim solo entiende ESC +, y no tiene idea en realidad quería decir Tecla Meta.
  • si configuro la opción "meta", las claves modificadas con "opción" se comportan igual que sin un modificador (no sé cómo probar formalmente qué entiende vim de una combinación de teclas que estoy escribiendo).

Las asignaciones "M-" funcionan perfectamente en MacVim (7.3.53), pero eso está fuera de una consola y no está dentro del alcance de esta pregunta.

Me interesa saber cómo hacer que esas asignaciones funcionen en Vim, bajo iTerm2 o Terminal.

las especificaciones de mi:

  • Mac OS X Lion 10.7.2
  • iTerm2 1.0.0.20111020
  • vim @ 7.3.107_0 + Python26 [aunque DarwinPorts]
+2

veces la gente usa el término "meta" con una interpretación muy estrecha en el sentido de "una Carácter ASCII con el bit alto establecido "; sin embargo, más generalmente, "Meta" puede significar usar el bit alto o prefijar con ESC. Supongo por la fraseología que "Opción como Meta" significa específicamente "establecer el bit alto", que es incompatible con el uso de una codificación UTF-8 (u otra de 8 bits). Los emuladores de terminal modernos generalmente tienen el valor predeterminado para UTF-8 y requieren el uso del prefijo ESC para "Meta". La opción "opción como meta clave" de Mac OS X Terminal solo significa "prefijo con ESC". –

+1

http://stackoverflow.com/a/15399297/2355112 tiene la solución de mapeo "Opción + char" en Mac. – oozzal

Respuesta

8

I He descargado el último iTerm2 e intenté ver lo que envió a/lo que imprimió Vim (i<C-v><M-a>) con la siguiente configuración:

  • opción como opción:

    impresiones Vim æ que es normal y esperado en mi teclado francés

  • opción como Meta:

    Vim se queda ahí, esperando que algo suceder Nada está impreso. Si presiono Option y a en secuencia, obtengo a. Presionando Opción y a en algún orden aleatorio puede imprimir á, lo cual es extraño y totalmente inesperado.

  • Opción + ESC como:

    impresiones Vim ^[a que significa "carácter de escape seguido por el carácter de una".

partir de estas pruebas, parece que Vim no recibirá jamás <M-> sin un poco de magia negro hipotético.

Si usted se pega con "Opción + ESC como", parece que va a tener que cambiar toda su encargo <M-something> asignaciones a <Esc>something.Esto puede funcionar, pero hará que escribir cualquier tipo de prosa sea doloroso en cualquier idioma que no sea inglés.

Lo que hago: Puedo dejar la llave de la opción, ya que es por lo que yo puedo escribir caracteres como œ…«» fácilmente y usar <Leader> (asignada a ,, ver :help mapleader) para todos mis asignaciones personalizados.

A algunas personas aquí les gusta reservarlo para complementos y abogar por un enfoque algo más simple y potencialmente más seguro.

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere) 
inoremap ,, <C-x><C-o>  "another way 
+1

Precisamente. Vim nunca obtiene ningún tipo de combinación de ' '. El problema es que hay varios complementos que uso que tienen enlaces 'M-', y es un inconveniente meterse con los complementos. ¿Tal vez hay un parche de vim para engañarlo y convertir una 'Esc + key' realmente rápida en' '? – Dan

+2

También me gustaría asignar algo como '' y '' para hacer lo que 'Alt + (arriba | abajo)' hace en Eclipse (es decir, mover líneas/líneas más allá de la línea arriba/abajo). Si tuviera que mapear 'Esc + (j | k)' en su lugar, sería una molestia cuando salga del modo insertar y genuinamente presione una de esas teclas de movimiento ... – Dan

+0

¿Podría enumerar los complementos que necesitan ''? – romainl

4

Dejé mi tecla de opción de actuar como normal y descubrieron que los vio como Vim <T- enlaces. Así, por ejemplo, tengo esta configuración de mapeo en mi .vimrc para pasar a la final de una palabra en el modo Insertar:

noremap! <T-Right> <C-o><Right>; 
Cuestiones relacionadas