.png)
Wie Sie wahrscheinlich alle wissen, ist es in Vim möglich, Befehlen im „Normalmodus“ eine Anzahl zuzuweisen, indem man ihnen eine Zahl voranstellt.
Dadurch werden beispielsweise 4dd
4 Zeilen gelöscht.
Ich frage mich, ob es eine Möglichkeit gibt, eine Zählung an einen Vim-Befehlszeilenbefehl (einen Befehl, der mit einem Doppelpunkt beginnt) zu übergeben, um ihn mehrmals zu wiederholen.
Etwa so: 2:normal oHi!
Den Befehl 2 Mal wiederholen normal oHi!
.
Gibt es eine Möglichkeit, so etwas in Vim zu tun?
Antwort1
Viele :-Befehle akzeptieren eine Anzahl als Argument. Zum Beispiel:
:delete 4
Würde vier Zeilen löschen, beginnend mit der Zeile, auf der sich der Cursor befindet.
Einige :-Befehle verwenden stattdessen eine Anzahl vor dem Befehlsnamen:
:2next
Würde die vornächste Datei in der Argumentliste bearbeiten.
Der Befehl akzeptiert jedoch :normal
in keiner der beiden Formen eine Zählung. Sie müssten ihn in eine Schleife einbinden:
for i in range(1,2)
normal oHi!
endfor
Und natürlich können Sie einen benutzerdefinierten Befehl erstellen, der das gewünschte Ergebnis liefert:
command -count=1 -nargs=+ Normal for i in range(1,<count>) | exe 'normal ' . <q-args> | endfor
Dadurch -count=1
wird der Standardzähler auf 1 gesetzt und Sie rufen es auf die zweite Art auf:
:2Normal oHi!