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

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

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

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

Hello, World!

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

Hello, World!
Hello
Hello
Hello

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

решение1

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

решение2

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

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

Связанный контент