Ich bin gerade dabei, Quellcode mit vim zu verschönern. {1}
Ich habe ein paar vim-Makros erstellt, die die einzelnen Schritte ausführen: Entfernen von nachgestellten Leerzeichen, Entfernen von Leerzeilen danach {
, Entfernen von Leerzeilen davor {
, solche Dinge .
Jetzt möchte ich ein Makro erstellen, das alle einzelnen Makros nacheinander ausführt. Sobald das erste rekursive Makro beendet wird (da es keine Übereinstimmungen mehr findet -> Übereinstimmungsfehler), wird auch mein "Wrapper" -Makro beendet.
Gibt es eine Möglichkeit, ein vim-Makro fortzusetzen, nachdem ein Submacro einen Fehler generiert hat?
{1} Ich kenne automatische Reformatierer. Ich könnte sie sogar für mein aktuelles Problem verwenden. Ich habe lediglich die Neuformatierung der Quelle erwähnt, um das Beispiel zu verdeutlichen. Veröffentlichen Sie keine Antworten zu diesem oder jenem Quellverschönerer. Die Frage ist nicht über Code Neuformatierung per se , sondern um vim Makros.
Beispiel:
- Makro 1 - abschließendes Leerzeichen entfernen -
qw/\s\+$d$@wq
- Makro 2 - Löschen von Leerzeilen vor} -
qe/\n\n *}dd@eq
- Wrapper Macro - Retabbing, Macro 1, Macro 2 -
qr:retab@w@eq
Wenn ich den Wrapper ausführe @r
, wird er retabiert, dann wird Makro 1 ausgeführt, bis kein abschließendes Leerzeichen mehr gefunden wird, und dann wird beendet ( ohne Makro 2 auszuführen).
Klärung:
Nach was ich suche, ist, wie man ein Submacro aufruft, damit, wenn dieses Submacro beendet wird, das aufrufende Makro fortfährt?