Kann ich mit dem .
Befehl ein Makro wiederholen ? Zum Beispiel möchte ich Folgendes eingeben können:
@q...
und lassen Sie es effektiv @q
4 mal anrufen . Mit dem Standardverhalten, das funktioniert nur , wenn ‚q‘ hält einen einzigen Befehl, zum Beispiel dw
, x
oder iHello<esc>
. (Dies ist jedoch sinnvoll, da '.' Die letzte Änderung wiederholt , nicht die letzten Tastenanschläge / Befehle)
Ich würde diese Arbeit auch gerne mit Zählungen haben. Beispiel: Geben Sie Folgendes ein:
3@q.
wäre effektiv das gleiche wie @q
6 mal laufen . Wie kann ich dieses Verhalten konfigurieren?
Enter
@@
wiederholt das letzte Makro. Wenn Sie dies also wegen Zuordnungen und dergleichen fragen, sollte es für Sie funktionieren.Antworten:
Probieren Sie es aus. Es wird neu zugeordnet,
@
so dassg@
(plus eine Dummy-Bewegungl
) danach verwendet wird, wodurch der letzte Operator wird und mit wiederholt werden muss.
.Ich habe versucht, so viele Eckfälle zu behandeln, wie ich mir vorstellen kann. Sie können wiederholen
@:
mit.
. Zählt zu@
oder.
wird für nachfolgende Pressen von beibehalten.
.Das ist schwierig und ich bin nicht davon überzeugt, dass irgendwo auf dem Weg etwas nicht kaputt geht. Also keine Garantien, Gewährleistungen oder Versprechen mit diesem.
Persönlich bin ich in Ordnung, wenn ich einen Unterschied zwischen den feinkörnigen Wiederholungen
.
der letzten Änderung und den Makro-Wiederholungen von habe@@
.BEARBEITEN
Nachdem ich so weit gegangen war, dachte ich mir, dass ich auch zusätzlichen Code hinzufügen könnte, der es ermöglicht,
.
unmittelbar nach der Aufnahme eines Makros zu drücken , um es wiederzugeben.quelle
.vimrc
).
unmittelbar nach der Aufnahme.\<plug>qstop
sollte vorherq
in der QStart-Funktion seinUm es zu wiederholen Ihre letzte Makro können Sie verwenden ,
@@
so3@@
würde im Wesentlichen laufen @q 3 mal. Die @ -Tastenanschläge können jedoch unhandlich sein, daher habe ich in meiner .vimrc die Zeilen:Dadurch kann ich meine Führungstaste (,) plus m verwenden, um das letzte Makro auszuführen. Dann können Sie eine Zahl voranstellen, um das Makro zu wiederholen.
Jetzt
3,m
ist gleichbedeutend mit3@@
. Gleiche Gesamttasten und keine Notwendigkeit, die Umschalttaste zu halten.EDIT : Als ich das überdachte, kam ich auf ein neues Makro.
nmap <leader>. @@
Dies funktioniert auch, wenn eine Zahl vorangestellt3,.
ist.3@@
Ich würde diese Arbeit gerne sehen, damit ich einen Makrobuchstaben übergeben und dieses Makro anstelle des letzten Makros wiederholen kann.quelle
3@q.
laufen@q
. Das macht das nicht.3@q.
? Es scheint, Sie könnten es genauso gut mit einer Zählung voranstellen. Ich neige dazu, eine Suche vor dem Beginn eines Makros festzulegen und dannn
im Makro zum Anfang zu springen, wo es wiedergegeben werden kann.Sie können die Verwendung eines Makros in einem anderen Makro aufzeichnen und wiederholen.
Jetzt
3@r
ist wie@q
sechs Mal laufen .quelle
Standardmäßig ist
space
in vim "1 Zeichen nach rechts verschieben", was bereits abgedecktl
ist. Daher habe ich den Speicherplatz neu zugeordnet, um ein Makro aus dem q-Puffer erneut auszuführen:Um es zu verwenden, nehmen Sie einfach zuerst ein Makro mit auf
qq
, beenden Sie die Aufnahme mitq
undspace
drücken Sie dann, um es wiederzugeben.quelle
Da ich keine
,
einfache, einfach zu tippende Lösung verwende und mag, funktioniert dies für mich:quelle