Hinweis: Ich gehe davon aus, dass Sie das a
Register für die gesamte Antwort verwenden, aber Sie können jedes Register verwenden
Anmerkung2: <1b>
ist Esc; Sie können dies mit Ctrl+vund dann einfügen Esc. Es kann auch angezeigt werden als ^[
(abhängig von der display
Einstellung).
Es ist keine Zuordnung; Es macht also Sinn, dass :map
das nicht funktioniert. Es ist in einem Register aufgezeichnet, und Sie können es wie jedes Register anzeigen und bearbeiten.
Alles, was Sie qtun müssen, ist, "dieses Register zu löschen und einen beliebigen Tastendruck daran anzuhängen" , und alles, was Sie @tun müssen, ist "ein Register als Befehle auszuwerten" .
Es gibt nichts "anderes" an einem Makro, Sie können jedes Register als Makro aufrufen.
Zum Anschauen einfach benutzen:
:echo @a
Genau wie bei jedem Register.
Sie können auch verwenden :registers
, um alle Register anzuzeigen.
Zum Bearbeiten können Sie verschiedene Dinge tun:
Der einfachste Weg, dem Sie etwas zuweisen können, @a
ist:
:let @a='iasd<1b>'
Dies startet den Einfügemodus ( i
), das Einfügen asd
und die Rückkehr zum normalen Modus.
Dies ist für umfangreiche Bearbeitungen nicht sehr nützlich. Sie könnten Funktionen verwenden (zB substitute()
) oder vielleicht etwas anhängen ( :let @a=@a . 'more'
), aber etwas in der Mitte zu ändern ist nicht so einfach.
Ich habe herausgefunden, dass der beste Weg dafür ist, einen neuen Puffer mit :split
oder zu starten :tabnew
und das Register zu bearbeiten, indem es dort eingefügt, bearbeitet und dann zurückkopiert wird.
Sie können verwenden, "apwelche den Text in den Puffer einfügen (wo a
ist Ihr Register):
iThis is A<1b>
Jetzt kann ich nur die Zeile ändern, um vielleicht:
iThis is an edited macro<1b>
Dann ^v$"ayziehe ich diese Zeile in das a
Register:
- ^ für den Zeilenanfang
- v für den visuellen Modus
- $ für Zeilenende
- "ay Ziehen Sie die Auswahl zur Registrierung
a
Wenn Sie möchten, können Sie dies tun, ohne den visuellen Modus mit zu verwenden ^"ay$.
Sie können jetzt verwenden @a, als ob dies das ist, was Sie ursprünglich aufgenommen haben.
Sie können auch einfach yyund dann verwenden @", was ein bisschen schneller ist. Dies kopiert jedoch auch die nachfolgende Newline und kann zu Nebenwirkungen führen. Eine andere Möglichkeit, dies zu beschleunigen, ist die Verwendung eines Makros :-)
Enter
am Ende Ihrer Aufnahme gedrückt . In vielen Fällen mag dies harmlos sein, aber in Szenarien, in denen Sie die Cursorposition am Ende der Aufzeichnung sorgfältig festgelegt haben, kann dies die Wiederholbarkeit beeinträchtigen.