Warum funktionieren meine Vim-Makros manchmal nicht mehr?

5

Das passiert mir manchmal und ich konnte nicht herausfinden warum. Nehmen wir an, ich beginne die Aufnahme in vim (drücke q), beende die Aufnahme und benutze die Makros einige Male. Dann mache ich noch etwas, wie die Datei weiter zu bearbeiten. Dann möchte ich die Makros wieder verwenden, aber diesmal passiert etwas anderes, zum Beispiel, der Cursor bewegt sich ein Wort zurück.

Das ist mir schon ein paar Mal passiert. Zum Beispiel starte ich heute ein Makro (q 2) und benutze es dann ein paar Mal (@ 2). Dann tippe ich Text ein und versuche, die Makros erneut zu verwenden (@ 2), aber diesmal wird der Cursor ein Wort zurückbewegt, als die Makros Text in HTML formatieren sollten.

Jedes Mal, wenn mir das passiert, versuche ich, es zu reproduzieren. Ich erstelle ein Dummy-Makro und mache es dann noch einmal, aber ich habe es nie nach Belieben reproduzieren können. Die Makros funktionieren nur, wenn ich versuche, dieses Verhalten zu reproduzieren.

Ich habe in keiner der Zeiten, in denen dies passiert ist, ein Vim geschlossen oder auf andere Weise ausgesetzt.

Ich weiß, dass es schwierig ist, auf diese Frage mit den bereitgestellten Informationen zu antworten, aber ich hoffe, dass dies einigen von Ihnen bereits passiert ist und Sie herausgefunden haben, warum dies passiert. Ich bin mir ziemlich sicher, dass ich nichts über Vim weiß.

Buzu
quelle

Antworten:

9

Nummerierte Register werden intern von Vim für Befehle wie verwendet y oder d.

Sie sollten sie nicht zum Aufzeichnen Ihrer Makros verwenden, da sie bei jedem Ziehen oder Löschen überschrieben werden.

Verwenden Sie Register a zu z, die Vim nicht berührt, stattdessen.

romainl
quelle
Das klingt ziemlich logisch. Ich bin sicher, was passiert, ist genau das, was Sie beschreiben. Danke Kumpel.
Buzu
Das ist ziemlich interessant. Es scheint, als würden die Makros auf die nächste Nummer verschoben. Tatsächlich befindet sich ein altes Makro jetzt auf @ 8, als ich es ursprünglich auf @ 2 registriert habe. Wie genau funktioniert das?
Buzu
Jedes Mal wenn du y oder d Der Inhalt der nummerierten Register wird um eins verschoben: "0 wird's Inhalt "1 's Inhalt und so weiter mit der letzten Sache, die Sie zerrten, immer das erste Register, "0. Also ja, es ist keine gute Idee, dort irgendetwas zu retten. Sehen :help registers für mehr.
romainl