Как повторить какое-то действие определенное время на Vim?
в Vim я обычно хочу повторить несколько серий команд несколько раз. Скажем, я хочу прокомментировать 5 строк, я бы использовал
I//<Esc>j
.j.j.j.j
есть ли способ повторить последнее ".ж" части несколько раз?
5 ответов
один из способов сделать это, чтобы назначить сочетание клавиш для макроса, а затем запустить макрос после последовало @@
команда run-last-macro. Например:
qa.jq@a@@
Если вы знаете, сколько раз нужно повторить, макрос, вы можете использовать 4@@
или что-то еще.
вы можете визуально выбрать строки, которые хотите повторить, введите :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
пока вы не комментирует все, что вы хотите.
Что касается вашего конкретного примера, я предпочитаю делать многострочную вставку с использованием режима визуального блока (доступ с 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
to go the end), затем введите 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,^,// ,