В Vim .
я могу повторить последнюю команду в обычном режиме; например:
dd.
удаляет строку дважды.
Но если я наберу
5j.
курсор не перемещается на 10 строк вниз. Как мне повторить последнюю команду нормального режима, особенно ход?
В Vim .
я могу повторить последнюю команду в обычном режиме; например:
dd.
удаляет строку дважды.
Но если я наберу
5j.
курсор не перемещается на 10 строк вниз. Как мне повторить последнюю команду нормального режима, особенно ход?
Ответы:
это выполнимо даже в vanilla vim, но применимость зависит от вашего варианта использования, т.е. как часто вам нужно будет повторять это, так как для его повторения требуется еще несколько нажатий клавиш.
используя, например, перемещение вниз на 5 строк, вы можете сделать:
:norm 5j
, он переместит курсор вниз на 5 строк@:
чтобы повторить движение:norm
означает нормальный, любая следующая строка рассматривается как нажатия клавиш в нормальном режиме.
qa
(сохранить макрос в регистр a
, вы можете выбрать свой собственный регистр, как qb
, qc
)5j
q
(закончить запись макроса)@a
повторить записанную операцию (замените a
выбранным вами именем регистра, например @b
, @c
)макрос требует больше духовной силы для настройки, но он более повторяем в том смысле, что вы можете хранить несколько операций в разных регистрах без переопределения последними операциями.
Вы можете повторить изменения с .
. Движения могут повторяться с помощью ;
команды. Эта команда кажется новой и выполняет те же действия, что и сценарий repmo.vim, упомянутый в других ответах.
Например, чтобы перейти ко второму следующему c
, нажмите 2fc
. Затем, чтобы сделать это снова, просто введите ;
.
Вы можете выбрать строки, которые вы хотите изменить, и выполнить последнюю команду нормальной точки
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'
;
не новый Это стандартная команда vi. Vi запоминает тип и целевой символ (но не числовой аргумент) последнегоf
/F
/t
/T
движения и;
повторяет его. Однако это не повторяет другие движения.