Мне нравится /* ... */(комментирует), так что вот мой трюк для вас. Конечно, вы можете адаптировать его для использования в разных случаях.
Комментарий с / * ... * /
Выделите текст (перейти к началу, запустить визуальный блок, перейти с помощью }):
<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