Wiederholen Sie den n-ten letzten Befehl in vim

13

Ich habe bemerkt, dass vim ziemlich intuitiv ist, aber ich habe Probleme, einen Weg zu finden, um den vorletzten Befehl (oder den vorletzten, den viertletzten usw.) zu wiederholen. Wenn Sie .im normalen Modus tippen, wird der letzte Befehl wiederholt. Durch Drücken von 3.wird der letzte Befehl dreimal wiederholt.

Nehmen wir an, ich tippe oHello<Esc>dann A, World!<Esc>. Ich verstehe jetzt

Hello, World!

auf dem Bildschirm. Jetzt sag ich will bekommen

Hello, World!
Hello
Hello
Hello

ohne Hallo zu schreiben. Speichert vim den Verlauf über einen Befehl hinaus, sodass ich so etwas wie eingeben kann 3,2.(dh den vorletzten Befehl dreimal wiederholen)?

redbmk
quelle
2
Denken Sie daran, dass Sie alles als Makro aufzeichnen können (um es qaoHello<esc>qdann @azu wiederholen, Hellowann immer Sie möchten). Sie können auch @@das zuletzt verwendete Makro wiederholen.
James McLaughlin
2
Ich nehme an, Sie könnten 3@adas Makro auch mehrmals wiederholen
redbmk

Antworten:

8

Nein, der .Befehl in vimhat weder eine Historie, noch gibt es irgendeine Art von Wiederholungshistorie für Befehle im normalen Modus, die mir bekannt sind. Für die geringste Anzahl von Tastenanschlägen würde ich empfehlen 4oHello<Esc>3jA, World<Esc>. Wenn Sie dies bereits getan haben oHello<Esc>A, World<Esc>, können Sie dem mit folgen uyy<Ctrl-r>3p.

jw013
quelle
3

Es gibt dieses Plugin mit dem Namen RepeatLast.vim, das das macht, was Sie wollen, aber es kostet Sie: Ihr Vim befindet sich immer im Aufzeichnungsmakromodus. Sie können es mit dem Paket-Manager installieren, den Sie wie alle anderen vim-Pakete verwenden, oder Sie können es einfach klonen und ablegen, ~/.vim/pluginwenn Sie vim oder ~/.config/nvim/plguinneovim verwenden. Um die vorletzte Aktion zu wiederholen, geben Sie den 2\.normalen Modus ein und um die vorletzte Aktion zu wiederholen, geben Sie den <n>\.normalen Modus ein.

http://www.vim.org/scripts/script.php?script_id=4381 https://github.com/vim-scripts/RepeatLast.vim

Sassan
quelle
2
@Sassan, könntest du vielleicht deine Antwort bearbeiten und schnell erklären, wie dieses Plugin installiert wird und wie genau es zur Lösung des OP-Problems verwendet werden kann?
terdon
2
@terdon Wenn jemand meine Antwort liest und nicht weiß, wie man einen Paketmanager verwendet, ist es für ihn wirklich besser, neugierig zu werden und die Zeit damit zu verbringen, die Paketmanager in vim kennenzulernen. Dasselbe gilt für denjenigen, der es liest und keine Informationen über vim-Plugins aus docs / README.md abruft.
Sassan
Das ist nicht der Punkt. Eine Antwort, die nur ein Link ist, wird nicht als Antwort betrachtet . Die Antworten sollten in sich geschlossen sein und alle Informationen enthalten, die zur Anwendung der vorgeschlagenen Lösung erforderlich sind. Danke für die Bearbeitung!
terdon
1
Eigentlich stimme ich zu, dieses Plugin ist zu hackisch, um von Leuten verwendet zu werden, die nicht wissen, wie man es installiert :)
Boris Churzin