Stellen Sie sich vor, ich hätte ein Makro aufgenommen und dann gelegentlich begonnen, ein Makro in dasselbe Register aufzunehmen. Kann ich die Aufnahme unterbrechen, damit das ursprüngliche Makro im Register erhalten bleibt?
Ich weiß, dass ich :let @b=@a
das Makro von Register a nach Register b kopieren und somit beibehalten kann, aber vielleicht gibt es einen einfacheren Weg?
:let @b=@q
funktioniert definitiv, es ist also nicht wahr, dass das Register gelöscht wird, wenn Sie mit der Aufnahme eines Makros beginnen. Und ich benutze q register für einmalige Makros. Und es ist sehr wahrscheinlich, dass ich es gelegentlich überschreiben kann.:let @b=@q
Tanz jedes Mal machen, wenn du ein einmaliges Makro aufnehmen willst? Das habe ich mit meiner "Wrapper" -Idee angedeutet: Schreiben Sie eine kurze Zuordnung, die bei@q
jedem Treffer gesichert wirdqq
. Es ist sehr leicht. Es gibt jedoch keinen integrierten Befehl "Aufzeichnen und Sichern".q
das zweite Mal drücke . Also:let @b=@a
ist imho die bisher beste Antwort.qm
weil ich mich mit der Mnemonik re q ord m acro daran erinnere .Wie von @Trendfischer in seinem Kommentar festgestellt, besteht das aktuelle Verhalten von vim nicht mehr darin, das Register beim ersten Drücken von zu leeren
q
.Wenn Sie das falsche Register ausgewählt haben, können Sie Folgendes tun:
q
Register aufnehmen, ist es"qp
),q
)0v$h
; nicht verwendenV
)"qy
wenn Sie dasq
Register verwenden; wieder: Verwenden Sie nicht die zeilenweise KopieY
).Natürlich können Sie mit ein wenig Aufwand sowohl das alte als auch das neue Makro retten (aber Sie müssen den Vorgang starten, bevor Sie das zweite Mal auf drücken
q
): Fügen Sie einfach das ein, was Sie aufgenommen haben, und ziehen Sie das "neue" / ". rechts "registrieren.quelle