Diese Befehle wandeln einen Satz von Tastenanschlägen auf irgendeine Weise in einen anderen um, aber ich bin etwas unsicher, welcher für eine bestimmte Situation am besten geeignet ist. Darüber hinaus gibt es auch die !
Varianten. Im Moment ist meine Verwendung ziemlich willkürlich. Könnte ich also wissen, welche Fallstricke mit den einzelnen verbunden sind? Insbesondere Hinweise zu den verschiedenen Modusversionen könnten hilfreich sein, da ich von Peter Rincker in einem Kommentar erfahren habe, dass cmap
sich so ziemlich überall in der Zeile erweitern lässt und nicht nur, wenn ich :
Befehle verwende. Welche Vorsichtsmaßnahmen kann ich gegen mögliche Fallstricke treffen?
19
Antworten:
Erstens,
map
undnoremap
ähnlich ist, dass jeder erstellen Zuordnungen für normal, visuelle, wählt und Bediener - Modi anhängig gleichzeitig . Vim beschreibt dies in:help map-overview
:Wenn Sie die Zuordnung gemäß der obigen Hilfe auf einen bestimmten Modus beschränken möchten, müssen Sie Folgendes voranstellen:
'n' (für normal), 'v' (für visuell und Auswahl), 'c' (für Befehl), 'x' (für visuellen Modus), 's' (für Auswahl), 'o' (für Operator anstehend ).
Zum Beispiel,
nmap n nzz
erstellt ein rekursives Mapping von
n
.Jetzt
noremap
ist nur eine nicht-rekursive Version vonmap
.Was ist also nicht-rekursives Mapping? Auch darauf hat Vim die Antwort
:help map-recursive
:Ein Beispiel hierfür ist die Zuordnung der folgenden:
:imap j k
:imap k j
Vim ersetzt jetzt j mit k und k mit j unendlich oft und zeigt Ihnen daher einen Fehler, dass Sie ein rekursives Mapping erstellt haben.
Aus diesem Grund wird im Allgemeinen empfohlen, dass Sie fast immer (außer bei
<Plug>
Zuordnungen oder Ähnlichem) nicht-rekursive Zuordnungen verwenden. Dies verhindert, dass Vim hängen bleibt, wenn Sie versehentlich rekursive Zuordnungen erstellen. Die nicht rekursive Zuordnung ist daher eine sicherere Möglichkeit, Befehle in Vim zuzuordnen.Mit den obigen Informationen können wir sehen, dass
:noreabbrev
es sich nur um eine nicht rekursive Version des:abbrev
Befehls handelt.Sie können
:abbrev
nur in den Modi Einfügen, Ersetzen und Befehl verwenden.:abbrev
wird zum Erstellen von Abkürzungen verwendet (Abkürzungen, die Vim erweitern kann). Die kurze Erweiterung besteht darin,:map
/:noremap
zu verwenden, um Zuordnungen zu erstellen,:abbrev
/:noreabbrev
Abkürzungen zu erstellen, oder wann immer Sie möchten, dass Vim Ihre Eingabe erweitert.quelle
nore
Formen des Befehls map zu verwenden. Ein weiterer (und meiner Meinung nach wichtigerer) Grund für ihre Verwendung ist, dass sie Ihre Zuordnungen zuverlässig / vorhersehbar machen. Wenn Sie die einfache Form verwenden und dierhs
einen Schlüssel enthält, der zufällig einem anderen Element zugeordnet ist, kann Ihre Zuordnung ein völlig anderes Verhalten aufweisen als beabsichtigt.