¿Por qué la asignación de teclas nnoremap <SCk>: w <CR> no funciona?

8

Estoy tratando de hacerlo para poder escribir un búfer en el disco con solo presionar una tecla.

(Nota al margen: Idealmente, me gustaría que esto funcione en todos los modos, pero por el momento como un comienzo Sólo estoy tratando de conseguir que funcione en modo normal. )

En el wiki de Vim dice ...

Soportes Vim que representan caracteres de control usando la notación simbólica como <F1>, <C-W>, <C-S-F1>, etc.

Y también...

Una clave con el Ctrlmodificador de clave se representa utilizando la <C-key>notación. Por ejemplo Ctrl-Rse representa usando <C-R>. Una tecla con el modificador de tecla Shift se representa usando la <S-key>notación. Por ejemplo Shift-F2se representa usando <S-F2>. Una clave con el Altmodificador de clave se representa usando <A-key>o <M-key>notación. Puede combinar uno o más modificadores clave. Por ejemplo, para representar Ctrl+Shift+F3puedes usar <C-S-F3>.

Eso parece estar diciendo que si pongo esto en mi .vimrcdebería funcionar ...

 nnoremap <S-C-k> :w<CR>

Pero no tiene efecto. Cuando recargo .vimrcy presiono shift+ control+ Kno [File] writtenaparece ningún mensaje en el área inferior.

También probé este pero luego option+ Ktampoco tuvo efecto ...

 nnoremap <M-k> :w<CR>

No hay mensajes de error.

Estoy en OS X.


ACTUALIZAR

Ok, acabo de probar esto ...

inoremap <M-s> Hey whats up

Luego, cuando entro en el modo de inserción y presiono option+ S, Vim sale ...

ß

¿OS X está interceptando mis teclas antes de que Vim las reciba? ¿Es por eso que esto no funciona?

Si es así, ¿hay alguna manera de que deje de hacerlo además de comprar una computadora diferente?

Ethan
fuente
55
Tenga en cuenta que la asignación Control + Mayús + tecla separada de Control + tecla no funciona. Ver: ¿Puedo asignar una letra mayúscula Ctrl + minúscula por separado de la letra mayúscula Ctrl +? (teclas como F1 son casos especiales). Dicho esto, el mapeo se ve bien. ¿Qué Vim estás usando? MacVim?
Martin Tournoij
Vale, gracias por dejarme saber. Intentaré usar en <M>lugar de <S-C>. No estoy usando MacVim. Estoy usando Vim 7.4.1129 regular instalado a través de MacPorts.
Ethan
44
OS X interpretará la Opción-S como ß. Para mapearlo en Vim, debes hacer :inoremap ß Hey whats up.
Amadan
1
<S-C-k>Son tres pulsaciones de teclas. Sólo digo'.
Antony

Respuestas:

1

La respuesta de tu teclado puede ser diferente de lo que esperas. Por ejemplo, puede proporcionar algunos caracteres especiales de su idioma.

Para verificar lo que hace su sistema presionando cualquier combinación:

ctrl+ven modo de inserción y luego option+koalt+k

Use el símbolo de salida en su mapeo vimrc en lugar de <M-k>

ADVERTENCIA: este método es aproximado: los símbolos dependen del sistema, terminal ect. Entonces debe poner en sus condiciones .vimrc como:

if has("gui_running")
    if has("x11")
        <map_command_here>
    if has("gui_gtk2")
        <map_command_here>

o para detectar sistemas (OS X) como aquí

Mesco
fuente
0

Cámbialo a <C-S-k>. Funciona bien para mí. Se puede dar también alguna otra tecla, gustaría <F10>de:wq!

:map <F10> :wq!<CR>
SibiCoder
fuente
SCk también funciona para mí en modo nnoremap.
SibiCoder
¿Qué sistema operativo y terminal?
Tom Hale
Linux y vim 7.2
SibiCoder