Doing .
wiederholt die letzte Änderung. Doing 2.
wiederholt die letzte Änderung zwei Mal.
Aber stellen Sie sich vor, ich möchte die Änderung vor der letzten Änderung wiederholen. Wie mache ich das in Vim?
Doing .
wiederholt die letzte Änderung. Doing 2.
wiederholt die letzte Änderung zwei Mal.
Aber stellen Sie sich vor, ich möchte die Änderung vor der letzten Änderung wiederholen. Wie mache ich das in Vim?
Glaube nicht, dass du das kannst, siehe :help .
Sie können jedoch ein Makro für Ihre Bearbeitungen aufzeichnen, wobei Sie aus einer Vielzahl von Registern wählen können {0-9a-zA-Z"}
(Großbuchstaben zum Anhängen). Verwenden Sie dann z. B. @u
für Bearbeitung 1, @t
für Bearbeitung 2 und so weiter.
Tolle Tipps zum Thema Aufnahme von Die besten VIM-Tipps
" Recording (BEST TIP of ALL)
qq # record to q
your complex series of commands
q # end recording
@q to execute
@@ to Repeat
5@@ to Repeat 5 times
qQ@qq : Make an existing recording q recursive *N*
" editing a register/recording
"qp :display contents of register q (normal mode)
<ctrl-R>q :display contents of register q (insert mode)
" you can now see recording contents, edit as required
"qdd :put changed contacts back into q
@q :execute recording/register q
Hier finden Sie weitere Tipps zum Wiederholen:
:& last substitute
:%& last substitute every line
:%&gic last substitute every line confirm
g% normal mode repeat last substitute
g& last substitute on all lines
@@ last recording
@: last command-mode command
:!! last :! command
:~ last substitute
:help repeating
Ich schrieb das RepeatLast.vim-Plugin um genau diese Anforderung zu erfüllen. Es bietet eine 5\.
Bindung der Taste, um die letzten 5 Änderungen (einschließlich Bewegungen) zu wiederholen und 2\D
um die letzten 2 Aktionen fallen zu lassen/zu vergessen.
Es funktioniert durch Aktivierung der Makroaufzeichnung die ganze Zeit was vielleicht nicht für jeden wünschenswert ist. Aber wenn man damit leben kann, funktioniert es in 99 % der Anwendungsfälle.
Neueste Version: https://github.com/joeytwiddle/RepeatLast.vim (Bitte um Rückmeldung!)
Vorbehalte:
Bitte
:set ch=2
damit die erste Zeile der Ausgabe nicht von der Meldung "Aufnahme" verdeckt wird.Die 1 % der Fälle, in denen es nicht wie vorgesehen funktioniert, sind in der Regel darauf zurückzuführen:
- Schwierigkeiten bei der langsamen Auslösung des CursorHold-Ereignisses ohne Verlust schnell wiederholte Tastenanschläge
- Unerwünschte Aufnahme von [Leerzeichen] und [Enter]-Tasten, wenn der Benutzer auf eine Eingabeaufforderung antwortet.
Schulung Ihrer q
Muskelaufbau zur präventiven Aufzeichnung von Makros könnte auf lange Sicht ein besserer Ansatz sein ;-)
In Anlehnung an die Antwort von Fredrick Phil, hier ein Beispiel:
Ihr Makro aufzeichnen
Im Folgenden wird gezeigt, wie man ein Makro aufzeichnet, das alles in und einschließlich einer Zeichenkette in Anführungszeichen löscht und in einem Register speichert d
. Der Befehl zum Löschen einer Zeichenkette lautet da"
. Um diesen Befehl im Makroregister d zu speichern, können wir also einfach Folgendes tun:
qdda"q
Beachten Sie, dass es mit einem q beginnt und endet. Das zweite Zeichen ist das Register, in diesem Fall d
zum Löschen. Wir hätten aber auch einen beliebigen Buchstaben oder eine Zahl angeben können. Die übrigen Zeichen da"
ist unser Befehl.
Mit unserem Makro
Nun, da unser Makro aufgezeichnet ist, können wir es mit dem @-Symbol, gefolgt von dem Register, aufrufen:
@d
Wiederholung des letzten Makrobefehls
Um den zuletzt aufgerufenen Makrobefehl erneut zu verwenden:
@@
Unverwandte Informationen:
In diesem Beispiel haben wir da"
das steht für delete a quoted string
. (Wenn Sie stattdessen alles löschen wollten inside
die in Anführungszeichen gesetzte Zeichenkette, aber nicht die Anführungszeichen selbst, können Sie stattdessen verwenden di"
statt.).
Ja! Sie können dies in Vim tun!
Eine der nützlichsten Eigenschaften von Vim ist seine Fähigkeit, das, was Sie tippen, zur späteren Wiedergabe aufzuzeichnen. Dies ist besonders nützlich für sich wiederholende Aufgaben, die nicht einfach mit .
An Aufnahme starten
An Aufnahme stoppen
An Wiedergabe Ihrer Tastenanschläge/Aufnahmen
Referenzen
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.