Immer mal wieder kommt es vor, dass mir beim Aufzeichnen eines Makros in VI, VIM oder Phpstorm IdeaVIM ein Fehler passiert. Nun gibt es natürlich die Möglich einfach aufzustehen, sich abputzen, sein Krönchen zu richten und die Makroaufzeichnung neu zu beginnen. Bei einfachen Makros sicher eine Option – VI bietet hier aber wesentlich besser Möglichkeiten.
Als einfaches Beispiel möchte ich ein Makro im Register m
aufzeichen, das meine Mailadresse ausgibt und und danach wieder in den Normalmodus
wechselt.
qmimb@bsc1.at^]q
sollte das für mich erledigen.
qm
Zeichnet Makro in Register m
auf.
i
wechselt in den Insert Mode
mb@bsc1.at
ist meine Mailadresse
^]
wechselt wieder in den Normal Mode
(^]
erstellt mal mit ctrl-v und esc)
q
beendet die Makroaufzeichnung
Soweit alles klar! @m
fügt meine Mailadresse ein. Fein! Nur ist meine Maildomain bsc.at
und nicht bsc1.at
.
Um das jetzt sauber auszubessern, öffne ich mir einen neuen Buffer in einem neuen Tab, schreibe mir den Inhalt von Register m
in eine neue Zeile, mache meine Änderungen und speichere alles wieder in Register m
zurück.
:tabnew
öffnet mir einen neuen leeren Buffer
"mp
den Inhalt von Register m
einfügen [“ (Register), m (Name des Registers), p (paste)]
Jetzt kann ich die falsche 1
entfernen
^v$"my
[ ^ (Zeilenanfang), v (Visual Mode), $ (zeilenende), \“m (Register m), y (kopieren, yank)]
:bd!
Buffer löschen und verwerfen
Übrigens: Eine Kopie eines Registers mache ich einfach mit :let @n=@m
– as simple as it is.
Natürlich brauche ich für diese Aktion nicht zwingend ein neues Tab und einen neuen Buffer. Irgendwie habe ich solche Dinge aber nicht gerne in meinem Source-Code.
Wie immer gibt es in VI viele Möglichkeiten ans Ziel zu kommen.