Wie man einen Vim-Befehlszeilenbefehl zählt (wie: insert,: normal usw.)

3

Wie wahrscheinlich alle von Ihnen wissen, ist es in Vim möglich, Befehle im "normalen Modus" zu zählen, indem Sie ihnen eine Zahl voranstellen.

Wie zum Beispiel 4dd das wird 4 Zeilen löschen.

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.

So etwas wie 2:normal oHi! das zu wiederholen normal oHi! Befehl 2 mal.

Gibt es eine Möglichkeit, so etwas in Vim zu tun?

wefwefa3
quelle

Antworten:

3

Viele: -Befehle akzeptieren eine Zählung als Argument. Zum Beispiel:

:delete 4

Würde vier Zeilen löschen, beginnend mit der Zeile, auf der sich der Cursor befindet.

Einige: -commands zählen stattdessen vor dem Befehlsnamen:

:2next

Würde die zweite nächste Datei in der Argumentliste bearbeiten

Jedoch die :normal Der Befehl akzeptiert in keiner Form eine Zählung. Sie müssten es in eine Schleife einwickeln:

for i in range(1,2)
    normal oHi!
endfor

Und natürlich können Sie einen benutzerdefinierten Befehl erstellen, der das tut, was Sie wollten:

command -count=1 -nargs=+ Normal for i in range(1,<count>) | exe 'normal ' . <q-args> | endfor

Das -count=1 setzt den Standardzähler auf 1 und Sie rufen ihn auf die zweite Art auf:

:2Normal oHi!
Heptite
quelle