В Vim я обычно хочу несколько раз повторять несколько команд. Скажем, я хочу прокомментировать 5 строк, я бы использовал
I//<Esc>j
.j.j.j.j
Есть ли способ повторить последнюю часть ".j" несколько раз?
В Vim я обычно хочу несколько раз повторять несколько команд. Скажем, я хочу прокомментировать 5 строк, я бы использовал
I//<Esc>j
.j.j.j.j
Есть ли способ повторить последнюю часть ".j" несколько раз?
Один из способов сделать это - назначить последовательность клавиш макросу, затем запустите макрос, а затем команду @@
run-last-macro. Например:
[email protected]@@
Если вы знаете, сколько раз вы хотите повторить макрос, вы можете использовать [email protected]@
или что-то еще.
Вы можете визуально выбрать строки, которые хотите повторить, введите :normal! .
, чтобы использовать vim для .
в каждой строке. Поскольку вы начали с визуального выделения, оно выглядит следующим образом:
:'<,'>normal! .
Однако, если вы добавляете и удаляете //
комментарии alot, вы можете найти следующие сопоставления полезными:
" add // comment with K
noremap K :s,^\(//\)\=,//,e <BAR> nohls<CR>j
" remove // comment with CTRL+K
noremap <C-K> :s,^//,,e <BAR> nohls<CR>j
Вы можете использовать 5K
, чтобы прокомментировать 5 строк, вы можете использовать визуальный режим, чтобы сначала выбрать свои строки, или вы можете просто нажать K
, пока не прокомментируете все, что хотите.
Что касается вашего конкретного примера, я предпочитаю выполнять многострочную вставку с использованием режима визуального блока (доступ к которому осуществляется с помощью Ctrl-v
). Например, если у меня были следующие строки:
This should be a comment.
So should this.
This is definitely a comment.
Is this a comment? Yes.
Я бы подошел к первому символу в верхней строке, нажав Ctrl-v
, чтобы перейти в режим визуальных блоков, перейдите к последней строке (возможно, используя 3j
для перемещения вниз по 3 линиям, возможно, используя 4g
для перехода прямо к 4-й строке или, может быть, просто G
, чтобы перейти в конец), затем введите I// <esc>
для вставки комментариев по всем строкам сразу:
// This should be a comment.
// So should this.
// This is definitely a comment.
// Is this a comment? Yes.
Кроме того, есть очень удобный плагин commenter/un-commenter, который поддерживает многие языки здесь. Это проще, чем вручную вставлять/удалять комментарии.
В вашем конкретном примере. вы также можете использовать диапазон .,.5s#^#//#
(для этого и следующие 5 строк) или визуальный блок (нажмите v, затем выберите нужный текст), а затем :%s#^#//#
.
Другой способ сделать это - установить метки и запустить подстановки в этом диапазоне:
ma jjjj mb :'a,'bs,^,// ,