В Vim я обычно хочу повторить некоторый ряд команд несколько раз. Скажите, я хочу к строкам комментария 5, я использовал бы
I//<Esc>j
.j.j.j.j
Там какой-либо путь состоит в том, чтобы несколько раз повторять последнюю ".j" часть?
Один из способов сделать это - назначить макросу последовательность клавиш, затем запустить макрос один раз, а затем выполнить команду @@
run-last-macro. Например:
qa.jq@a@@
Если вы знаете, сколько раз вы хотите повторить макрос, вы можете использовать 4 @@
или что-то еще.
Для вашего конкретного примера. вы также можете использовать диапазон .,.5s#^#//#
(чтобы сделать эту и следующие 5 строк) или визуальный блок (нажмите v, затем выделите нужный текст), за которым следует :%s#^#//#
.
Вы можете визуально выбрать строки, на которых хотите повторить это, наберите : normal! .
для использования vim .
в каждой строке. Поскольку вы начали с визуального выбора, он в итоге выглядит следующим образом:
:'<,'>normal! .
Однако, если вы добавляете и удаляете много комментариев //
, вам могут пригодиться следующие сопоставления:
" 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
, пока не прокомментируете все, что хотите.
Другой способ сделать это - установить метки и выполнить подстановки в этом диапазоне:
ma jjjj mb :'a,'bs,^,// ,
Что касается вашего конкретного примера, я предпочитаю выполнять многострочную вставку с использованием режима визуального блока (доступ осуществляется с помощью 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 //
, чтобы вставить комментарии сразу во все строки:
// This should be a comment.
// So should this.
// This is definitely a comment.
// Is this a comment? Yes.
Кроме того, здесь есть очень удобный плагин для комментирования / отмены комментариев, который поддерживает множество языков . Это проще, чем вставлять / удалять комментарии вручную.