Ich habe eine augroup
in meinem .vimrc
Inhalt erstellt autocmd
und muss diese autocommand
im laufenden Betrieb aktivieren / deaktivieren .
Die Idee ist, ein Mapping zu erstellen (sagen wir F4zum Beispiel), das diese Autobefehle aktiviert, wenn sie einmal gedrückt werden, und sie deaktiviert, wenn sie erneut gedrückt werden, ohne dass eine Datei erstellt oder neu geladen werden muss .vimrc
.
Wie kann ich das machen?
key-bindings
autocmd
statox
quelle
quelle
else
Zweig entfernen , indem Sie denautocmd!
am Anfang bedingungslos ausführen.exists('#TestAutoGroup#BufEnter')
nach einem zurückkehrenautocmd!
?(Ich habe es tatsächlich selbst herausgefunden, aber da ich auf dieser Website keine Antwort gefunden habe, dachte ich, dass dies nützlich sein könnte, um eine selbst beantwortete Frage zu erstellen. )
Dazu ist es möglich, die folgende Funktion zu erstellen und in Folgendes einzufügen
.vimrc
:Die Funktion erstellt eine Variable, mit der bestimmt wird, ob die Gruppe zuvor aktiviert wurde oder nicht.
Wenn es nicht aktiviert war, wird die Gruppe mit den gewünschten Autobefehlen gefüllt. Wenn die Gruppe zuvor aktiviert war, verwenden wir sie
autocmd!
, um sie zurückzusetzen, dh den zuvor eingegebenen Befehl zu löschen.Eine relevante Dokumentation finden Sie hier
Schließlich ist es möglich, die folgende Zuordnung zu erstellen:
verwenden F4, um die Funktion aufzurufen.
EDIT : Karl Yngve Lervåg schlug eine verbesserte Version dieser Funktion vor, die die Anzahl der Codezeilen reduzierte. Ich hielt es für gut, beide Versionen beizubehalten, wobei die erste noch funktioniert, was für einen Vimscript-Debütanten wie mich möglicherweise leichter zu verstehen ist.
Hier ist Karls verbesserte Funktion, vielen Dank an ihn:
In dieser Version wird die Gruppe immer zurückgesetzt, und wenn sie nicht aktiviert wurde, wird sie mit den gewünschten Autobefehlen gefüllt
quelle
Ich finde, der einfache Weg ist, eine globale Variable zu verwenden. Beispiel:
Weitere Hilfe finden Sie unter:
quelle