Powtórz n-te ostatnie polecenie w vimie

13

Zauważyłem, że vim może być dość intuicyjny, ale mam problem ze znalezieniem sposobu na powtórzenie polecenia od drugiego do ostatniego (lub od trzeciego do ostatniego, od czwartego do ostatniego itd.). Wpisując .w trybie normalnym, powtórzy ostatnie polecenie. Naciśnięcie 3.spowoduje powtórzenie ostatniego polecenia trzy razy.

Powiedzmy, że typ oHello<Esc>potem A, World!<Esc>. Teraz rozumiem

Hello, World!

na ekranie. Teraz powiedz, że chcę dostać

Hello, World!
Hello
Hello
Hello

bez pisania Cześć. Czy vim przechowuje historię poza jednym poleceniem, więc mógłbym wpisać coś takiego 3,2.(tj. Powtórzyć polecenie od drugiego do ostatniego trzy razy)?

redbmk
źródło
2
Pamiętaj, że możesz nagrać wszystko jako makro ( qaoHello<esc>qa następnie @apowtarzać w Hellodowolnym momencie.) Istnieje również @@powtórzenie ostatnio używanego makra.
James McLaughlin
2
Zakładam, że możesz też 3@apowtórzyć makro wiele razy
redbmk

Odpowiedzi:

8

Nie, .polecenie w vimnie ma historii, ani nie ma żadnej historii powtarzania dla poleceń w trybie normalnym, o której wiem. Polecam, aby uzyskać jak najmniejszą liczbę naciśnięć klawiszy 4oHello<Esc>3jA, World<Esc>. Jeśli już to zrobiłeś oHello<Esc>A, World<Esc>, możesz to zrobić za pomocą uyy<Ctrl-r>3p.

jw013
źródło
4

Jest taka wtyczka o nazwie RepeatLast.vim, która robi to, co chcesz, ale kosztuje: twój vim jest zawsze w trybie nagrywania makr. Możesz zainstalować go za pomocą menedżera pakietów, którego używasz, tak jak innych pakietów vim, lub możesz po prostu sklonować i upuścić, ~/.vim/pluginjeśli używasz vima lub ~/.config/nvim/plguinneovim. Aby powtórzyć od drugiej do ostatniej akcji, należy wpisać 2\.w trybie normalnym, a aby powtórzyć ostatnią akcję, należy wpisać <n>\.w trybie normalnym.

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

Sassan
źródło
2
@Sassan, czy mógłbyś edytować swoją odpowiedź i szybko wyjaśnić, jak zainstalować tę wtyczkę i jak dokładnie można jej użyć do rozwiązania problemu PO?
terdon
2
@terdon, jeśli ktoś przeczyta moją odpowiedź i nie wie, jak korzystać z menedżera pakietów, naprawdę lepiej jest się zaciekawić i poświęcić czas na poznanie menedżerów pakietów w vimie. To samo dotyczy tego, kto go czyta i nie wie o uzyskiwaniu informacji z docs / README.md dla wtyczek vim.
Sassan
Nie o to chodzi. Odpowiedź, która jest tylko linkiem, nie jest uważana za odpowiedź . Odpowiedzi powinny być samodzielne i zawierać wszystkie informacje niezbędne do zastosowania proponowanego rozwiązania. Dzięki za edycję!
terdon
1
Właściwie zgadzam się, że ta wtyczka jest zbyt hackerska, aby korzystać z niej ludzie, którzy nie wiedzą, jak ją zainstalować :)
Boris Churzin