Подтвердить что ты не робот

Как повторить последнее изменение в Vim?

Выполнение . повторяет последнее изменение. Выполнение 2. повторяет последнее изменение 2 раза. Но представьте, что я хочу повторить изменение до последнего, как это сделать в Vim?

4b9b3361

Ответ 1

Не думайте, что можете, см. :help . Однако, что вы можете сделать, это записать макрос для ваших изменений, у вас есть много регистров, чтобы выбрать из {0-9a-zA-Z"} (верхний регистр для добавления). Затем используют, например, @u для редактирования 1, @t для редактирования 2 и т.д.

Отличные советы по записи из Лучшие советы VIM

" Recording (BEST TIP of ALL)
qq  # record to q
your complex series of commands
q   # end recording
@q to execute
@@ to Repeat
[email protected]@ to Repeat 5 times
[email protected]                             : Make an existing recording q recursive *N*
" editing a register/recording
"qp                               :display contents of register q (normal mode)
<ctrl-R>q                         :display contents of register q (insert mode)
" you can now see recording contents, edit as required
"qdd                              :put changed contacts back into q
@q                                :execute recording/register q

Посмотрите на них, чтобы больше советов для повторения:

:&     last substitute
:%&    last substitute every line
:%&gic last substitute every line confirm
g%     normal mode repeat last substitute
g&     last substitute on all lines
@@     last recording
@:     last command-mode command
:!!    last :! command
:~     last substitute
:help repeating

Ответ 2

Я написал плагин RepeatLast.vim для удовлетворения этого точного требования. Он обеспечивает привязку клавиш 5\..

Он позволяет автоматически записывать макросы, что может быть нежелательно для всех. Но если вы можете жить с этим, он работает в 99% случаев использования.

Версия для разработки: https://github.com/joeytwiddle/RepeatLast.vim (обратная связь!)

Предостережения: Помимо раздражающего сообщения "запись" (:set ch=2), 1% раз, когда он не работает отлично, связаны с:

  • Трудности, которые медленно запускают событие CursorHold, не теряя при этом быстро повторяющиеся нажатия клавиш
  • Нежелательная запись [Пробел] и [Enter], когда пользователь отвечает на приглашение.

Обучение вашей мышце q для предварительной записи макросов может быть лучшим подходом в долгосрочной перспективе.; -)