
Я заметил, что 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/plguin
neovim. Чтобы повторить предпоследнее действие, вы должны ввести 2\.
в обычном режиме, а чтобы повторить предпоследнее действие, вы должны ввести <n>\.
в обычном режиме.
http://www.vim.org/scripts/script.php?script_id=4381 https://github.com/vim-scripts/RepeatLast.vim