Pourquoi le mappage de clés nnoremap <SCk>: w <CR> ne fonctionne-t-il pas?

8

J'essaie de faire en sorte que je puisse écrire un tampon sur le disque avec une seule touche.

(Note latérale: idéalement, j'aimerais que cela fonctionne dans tous les modes, mais pour le moment, j'essaie simplement de le faire fonctionner en mode normal. )

Sur le wiki Vim, il est écrit ...

Vim supports représentant les caractères de contrôle en utilisant la notation symbolique comme <F1>, <C-W>, <C-S-F1>, etc.

Et aussi...

Une clé avec le Ctrlmodificateur de clé est représentée à l'aide de la <C-key>notation. Par exemple Ctrl-Rest représenté en utilisant <C-R>. Une touche avec le modificateur de touche Maj est représentée à l'aide de la <S-key>notation. Par exemple Shift-F2est représenté en utilisant <S-F2>. Une clé avec le Altmodificateur de clé est représentée à l'aide de la notation <A-key>ou <M-key>. Vous pouvez combiner un ou plusieurs modificateurs clés. Par exemple, pour représenter, Ctrl+Shift+F3vous pouvez utiliser <C-S-F3>.

Cela semble dire que si je mets ça dans ma .vimrcmain ça devrait marcher ...

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

Mais cela n'a aucun effet. Lorsque je recharge .vimrcet appuie sur shift+ control+, Kaucun [File] writtenmessage n'apparaît dans la zone inférieure.

J'ai aussi essayé celui-ci mais option+ Kn'a eu aucun effet non plus ...

 nnoremap <M-k> :w<CR>

Aucun message d'erreur.

Je suis sur OS X.


MISE À JOUR

Ok je viens d'essayer ça ...

inoremap <M-s> Hey whats up

Puis quand je passe en mode insertion et appuie sur option+ S, Vim sort ...

ß

OS X intercepte-t-il mes frappes avant même que Vim ne les reçoive? Est-ce pour cela que cela ne fonctionne pas?

Dans l'affirmative, existe-t-il un moyen de l'empêcher de faire cela autre que l'achat d'un autre ordinateur?

Ethan
la source
5
Notez que le mappage Ctrl + Maj + touche distincte de Ctrl + touche ne fonctionne pas. Voir: Puis-je mapper une lettre majuscule Ctrl + séparément de la lettre minuscule Ctrl +? (les touches comme F1 sont des cas spéciaux). Cela étant dit, la cartographie semble bien. Quels Vim utilisent? MacVim?
Martin Tournoij
Ok, merci de me l'avoir fait savoir. Je vais essayer d'utiliser <M>au lieu de <S-C>. Je n'utilise pas MacVim. J'utilise régulièrement Vim 7.4.1129 installé via MacPorts.
Ethan
4
OS X interprétera Option-S comme ß. Pour le cartographier dans Vim, vous devez le faire :inoremap ß Hey whats up.
Amadan
1
<S-C-k>est trois touches. Je dis juste.
Antony

Réponses:

1

Votre réponse au clavier peut être différente de ce que vous attendez. Par exemple, il peut fournir certains caractères spéciaux de votre langue.

Pour vérifier ce que fait votre système en appuyant sur n'importe quelle combinaison:

ctrl+ven mode insertion, puis option+koualt+k

Utilisez le symbole de sortie dans votre mappage vimrc au lieu de <M-k>

AVERTISSEMENT: cette méthode est approximative - les symboles dépendent du système, du terminal ect. Vous devez donc mettre vos conditions .vimrc comme:

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

ou pour détecter des systèmes (OS X) comme ici

Mesco
la source
0

Remplacez-le par <C-S-k>. Ça fonctionne bien pour moi. Vous pouvez également donner une autre clé, comme <F10>pour:wq!

:map <F10> :wq!<CR>
SibiCoder
la source
SCk fonctionne également pour moi en mode nnoremap.
SibiCoder
Quel OS et terminal?
Tom Hale
Linux et vim 7.2
SibiCoder