Von :h mapmode-n
:
Es gibt sechs Zuordnungen
- Für den Normalmodus: Wenn Sie Befehle eingeben.
- Für den visuellen Modus: Wenn Sie Befehle eingeben, während der visuelle Bereich hervorgehoben ist.
- Für den Auswahlmodus: Wie der visuelle Modus, aber die Eingabe von Text ersetzt die Auswahl.
- Für anstehenden Operator-Modus: Wenn ein Operator ansteht (nach "d", "y", "c" usw.). Siehe unten: | omap-info |.
- Für den Einfügemodus. Diese werden auch im Ersetzungsmodus verwendet.
- Für den Befehlszeilenmodus: Bei Eingabe eines Befehls ":" oder "/".
Es gibt viele verschiedene Möglichkeiten, ein Mapping zu erstellen. Wenn Sie :h map
sehen, für welche Modi die verschiedenen Befehle Modi zur Verfügung stellen:
:map |mapmode-nvo| *:map* :nm[ap] |mapmode-n| *:nm* *:nmap* :vm[ap] |mapmode-v| *:vm* *:vmap* :xm[ap] |mapmode-x| *:xm* *:xmap* :smap |mapmode-s| *:smap* :om[ap] |mapmode-o| *:om* *:omap* :map! |mapmode-ic| *:map!* :im[ap] |mapmode-i| *:im* *:imap* :lm[ap] |mapmode-l| *:lm* *:lmap* :cm[ap] |mapmode-c| *:cm* *:cmap*
Wie Sie sehen, :map
sagt das mapmode-nvo
, was für den normalen, visuellen und für den Bediener anstehenden Modus steht. Das ist der Grund, map x y
der im Normalmodus nicht funktioniert. Wenn Sie diese Liste durchsehen, können Sie sehen, wie es keine von ihnen gibt mapmode-in
. Es gibt also keine Möglichkeit, dies zu tun. Sie müssen also nmap x y
und tun imap x y
. Oder wenn Sie möchten, dass es für jeden Modus gilt map x y
, und map! x y
.
Wenn Sie nur zwei Zeilen schreiben, wird viel Unordnung erzeugt, wenn Sie mehrere Mappings ausführen.
Wenn Sie wirklich viele Zuordnungen durchführen, können Sie Folgendes tun:
function! DoubleMap(x, y) exec "nmap ".x." ".y exec "imap ".x." ".y endfunction
Dann
imap x y nmap x y imap foo bar nmap foo bar imap blah spam nmap blah spam
Wird
call DoubleMap('x', 'y') call DoubleMap('foo', 'bar') call DoubleMap('blah', 'spam')
Dies ist jedoch ein Problem, wenn Ihr Mapping Anführungszeichen oder nicht druckbare Zeichen enthält.