Повторите n-ю последнюю команду в vim

13

Я заметил, что vim может быть довольно интуитивно понятным, но у меня возникают проблемы с поиском способа повторения второй до последней команды (или третьей до последней, четвертой до последней и т. Д.). При вводе .в обычном режиме он будет повторять последнюю команду. Нажатие 3.повторит последнюю команду три раза.

Допустим, я набираю oHello<Esc>тогда A, World!<Esc>. Теперь я получаю

Hello, World!

на экране. Теперь скажи, что я хочу получить

Hello, World!
Hello
Hello
Hello

без ввода Hello. Сохраняет ли vim историю за пределами одной команды, чтобы я мог напечатать что-то вроде 3,2.(то есть повторить команду от второй до последней три раза)?

redbmk
источник
2
Помните, что вы можете записать что-нибудь в качестве макроса ( qaoHello<esc>qзатем @aповторить, Helloкогда захотите.) Также есть @@возможность повторить последний использованный макрос.
Джеймс Маклафлин
2
Я бы предположил, что вы могли бы также 3@aповторить макрос несколько раз
redbmk

Ответы:

8

Нет, .команда в vimне имеет истории, и нет никакой истории повторений для команд обычного режима, о которых я знаю. Для наименьшего числа нажатий клавиш, я бы порекомендовал 4oHello<Esc>3jA, World<Esc>. Если вы уже сделали oHello<Esc>A, World<Esc>, вы можете следовать за этим с uyy<Ctrl-r>3p.

jw013
источник
4

Есть этот плагин RepeatLast.vim, который делает то, что вы хотите, но с затратами: ваш vim всегда находится в режиме записи макроса. Вы можете установить его с помощью менеджера пакетов, который вы используете, как и любые другие пакеты vim, или вы можете просто клонировать и вставить его, ~/.vim/pluginесли вы используете vim или ~/.config/nvim/plguinneovim. Чтобы повторить второе до последнего действия, вы должны набрать 2\.в обычном режиме, а чтобы повторить th до последнего действия, вы должны набрать <n>\.в обычном режиме.

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

Sassan
источник
2
@ Сассан, не могли бы вы отредактировать свой ответ и быстро объяснить, как установить этот плагин и как именно его можно использовать для решения проблемы ОП?
Тердон
2
@terdon, если кто-то читает мой ответ и не знает, как использовать менеджер пакетов, для него действительно лучше проявить любопытство и потратить время и узнать о менеджерах пакетов в vim. То же самое для того, кто читает это и не знает о получении информации от docs / README.md для плагинов vim.
Сасан
Не в этом дело. Ответ, который является просто ссылкой , не считается ответом . Ответы должны быть автономными и предлагать всю информацию, необходимую для применения предложенного решения. Спасибо за редактирование!
Тердон
1
На самом деле я согласен, этот плагин слишком хакерский, чтобы его могли использовать люди, которые не знают, как его установить :)
Борис Чурзин