Мені подобається /* ... */
(коментарі C ansi), тож ось це для мене моя хитрість. Ви, звичайно, можете адаптувати його до використання у різних випадках.
Прокоментувати з / * ... * /
Виберіть текст (перейдіть до початку, запустіть візуальний блок, стрибайте з }
):
<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
яку застосовує одну і ту ж команду кілька разів у кожному вибраному рядку. Команда просто вставити a /*
, знаходить кінець цього рядка і закінчується, вставляючи a*/
: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 /*
, видаляє його; знаходить вперед a */
, видаляє його.
?/\*<enter>xx/\*/<enter>xx