Мне нравится /* ... */
(комментирует), так что вот мой трюк для вас. Конечно, вы можете адаптировать его для использования в разных случаях.
Комментарий с / * ... * /
Выделите текст (перейти к началу, запустить визуальный блок, перейти с помощью }
):
<c-V>}
Введите команду, которая будет применена в выборе
:norm i/* <c-v><esc>$a */
Команда будет выглядеть так: :'<,'>norm i /* ^[$a */
Смотрите (i *) для деталей.
Раскомментируйте / * ... * /
Выделите текст (как и раньше или другим способом):
<c-V>}
Введите команду, которая будет применена в выборе
:norm :s-\s*/\*\s*-<c-v><enter>$bbld$
Команда будет выглядеть так: :'<,'>norm :s-\s*/\*\s*-^M$bbld$
Смотрите (ii *) для деталей.
Результат
Эффект - комментарии построчно:
Comment block
Comment block
Comment block
Становится (и наоборот):
/* Comment block */
/* Comment block */
/* Comment block */
Лучше сохранить это как часть map
или @reg
в вашем .vimrc
, потому что это много, чтобы напечатать. Если вы предпочитаете один /*
и */
весь блок, используйте:
Комментарий с одним / * * / целым блоком
Сохраните его в реестре, записав, скажем qc
, затем в начале абзаца комментарий:
v}di/* */<esc>hhhp
и не забудьте q
снова, чтобы закончить запись.
Смотрите (iii *) для деталей.
Раскомментировать один / * * / из блока
Сохранить его в реестре, скажем, @u
. Поместите курсор в любое место внутри блока и:
?/\*<enter>xx/\*/<enter>xx
Сохранить регистр, закончив q
команду.
Смотрите (iv *) для деталей.
Результат
Эффект - один комментарий для нескольких строк:
Comment block
Comment block
Comment block
Становится (и наоборот):
/* Comment block
Comment block
Comment block */
Пояснения
(i *) Это работает, используя, norm
который применяет ту же команду несколько раз в каждой выбранной строке. Команда просто вставляет /*
, находит конец этой строки и завершает, вставляя*/
:norm i/* <c-v><esc>$a */
(ii *) Он также используется norm
для повторения поиска / замены в каждой строке. Ищите spaces /* spaces
и заменяйте ничем. После этого находит конец строки, вернет два слова, справа букву, удалите до конца.
:norm :s-\s*/\*\s*-<c-v><enter>$bbld$
(iii *) Выделите абзац v}
, удалите его, вставьте открытый и закрытый комментарий, переместитесь в его середину и вставьте удаленный блок.
v}di/* */<esc>hhhp
(iv *) В любом месте посередине находит назад a /*
, удаляет его; находит вперед */
, удаляет его.
?/\*<enter>xx/\*/<enter>xx