2011-01-18 16 views
15

¿Por qué no puedo asignar por cualquiera de los comandos mapa * (nmap, IMAP, etc.), el Ctrl través Ctrl pulsaciones de teclas? De hecho, parece que algunos de ellos, como Ctrl , están limitados a ^[ en el nivel X-Window. ¿Cómo hago para que vim anule esos enlaces predeterminados?vim: mapeo ctrl-0 a ctrl-9?

es decir, si lo hago imap <C-3> fancystuffhere, tecleando Ctrl en modo de inserción me pone en modo normal, en lugar de insertar 'fancystuffhere'.

Estoy en linux/X11.

Respuesta

20

Debido a que tanto vim y gvim cola de utilización de bytes en lugar de cola de eventos de pulsación de tecla, por lo que mientras que los valores de 0x40 (@) a 0x5F (_) (incluyendo 0x41-0x5A (AZ) Rango) tienen caracteres de control correspondientes (que pueden obtener su códigos al restar 0x40 de su valor), no se pueden usar caracteres que estén por encima y más allá de este rango junto con C-. También es la razón por la que C-S- para teclas alfanuméricas no funciona incluso en gvim (las teclas funcionales generan más de un byte, por lo que <C-S-F1> puede funcionar). Sustitución <C-3> con <ESC> se lleva a cabo por el terminal, puede intentar mapear en casi cualquier aplicación GUI y ve que no consigue <Esc> mapeados ..

+0

No puedo conseguir que estas vinculaciones funcionen en OS X El Capitan. ¿Deberían trabajar en el medioambiente? Extendí el hilo aquí http://apple.stackexchange.com/q/235623/15504 –

+1

@Masi ¿No es mi respuesta que indique claramente que no funcionan * por diseño *? En Neovim puedes mapearlos (aunque no hará que realmente funcionen, necesitas decirle al emulador de terminal que genere secuencias de escape específicas), pero en Vim * nunca * funciona. – ZyX

+0

Expandí el tema sobre Gvim con combinaciones de teclas estereoscópicas en OS X aquí http://vi.stackexchange.com/q/7452/2923 ¿Qué emulador de terminal es el más adecuado para las secuencias de escape específicas? ¿Se administrará por defecto OS X? –

2

A mi modo de lograr esto en Windows es utilizar Autohotkey y reasignar CTRL + , CTRL + , etc. a CTRL + F1, CTRL + F2, etc.

Sé que estás en Linux, por lo que no se aplica a ti pero pensé que lo mencionaría para cualquier persona interesada