Por que o mapeamento de chaves nnoremap <SCk>: w <CR> não está funcionando?

8

Estou tentando fazer isso para que eu possa gravar um buffer no disco com um toque de tecla.

(Nota: idealmente, eu gostaria que isso funcionasse em todos os modos, mas, no momento, estou apenas tentando fazê-lo funcionar no modo normal. )

No wiki do Vim, diz ...

Vim suportes representando caracteres de controlo, utilizando a notação simbólica como <F1>, <C-W>, <C-S-F1>, etc.

E também...

Uma chave com o Ctrlmodificador de chave é representada usando a <C-key>notação. Por exemplo, Ctrl-Ré representado usando <C-R>. Uma tecla com o modificador de tecla Shift é representada usando a <S-key>notação. Por exemplo, Shift-F2é representado usando <S-F2>. Uma chave com o Altmodificador de chave é representada usando <A-key>ou <M-key>notação. Você pode combinar um ou mais modificadores de chave. Por exemplo, para representar Ctrl+Shift+F3você pode usar <C-S-F3>.

Isso parece estar dizendo que, se eu colocar isso no meu .vimrc, deve funcionar ...

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

Mas não tem efeito. Quando recarrego .vimrce pressiono shift+ control+, Knenhuma [File] writtenmensagem aparece na área inferior.

Eu também tentei este, mas então option+ Knão teve efeito também ...

 nnoremap <M-k> :w<CR>

Nenhuma mensagem de erro.

Estou no OS X.


ATUALIZAR

Ok, eu apenas tentei isso ...

inoremap <M-s> Hey whats up

Então, quando entro no modo de inserção e pressiono option+ S, o Vim gera ...

ß

O OS X está interceptando minhas teclas antes mesmo que o Vim as receba? É por isso que isso não está funcionando?

Nesse caso, existe uma maneira de fazê-lo parar de fazer isso além de comprar um computador diferente?

Ethan
fonte
5
Observe que o mapeamento das teclas Control + Shift + separadas da tecla Control + não funciona. Consulte: Posso mapear uma Ctrl + letra maiúscula separadamente de Ctrl + letra minúscula? (teclas como F1 são casos especiais). Dito isto, o mapeamento parece bom. Qual Vim está usando? MacVim?
Martin Tournoij 6/03/16
OK obrigado por me avisar. Vou tentar usar em <M>vez de <S-C>. Eu não estou usando o MacVim. Estou usando o Vim 7.4.1129 regular instalado via MacPorts.
Ethan
1
Também perguntou no Stack Overflow
Martin Tournoij 7/16/16
4
O OS X interpretará a Opção-S como ß. Para mapeá-lo no Vim, você precisa fazer :inoremap ß Hey whats up.
Amadan 8/03/16
1
<S-C-k>são três pressionamentos de tecla. Apenas dizendo'.
Antony

Respostas:

1

A resposta do seu teclado pode ser diferente do que você espera. Por exemplo, ele pode fornecer alguns caracteres especiais do seu idioma.

Para verificar o que o seu sistema faz pressionando qualquer combinação:

ctrl+vno modo de inserção e depois option+koualt+k

Use o símbolo de saída no seu mapeamento vimrc em vez de <M-k>

AVISO: este método é aproximado - os símbolos dependem do sistema, do terminal ect. Então você deve colocar suas condições .vimrc como:

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

ou para detectar sistemas (OS X) como aqui

Mesco
fonte
0

Mude para <C-S-k>. Isso funciona bem para mim. Você também pode dar outra chave, como <F10>para:wq!

:map <F10> :wq!<CR>
SibiCoder
fonte
O SCk também funciona para mim no modo nnoremap.
SibiCoder
Qual SO e terminal?
Tom Hale
Linux e vim 7.2
SibiCoder