Найти тему
25,4K подписчиков

Рубрика "Секреты Вим". Форматирование комментариев

262 прочитали

Привет, коллеги. В прошлом выпуске мы обсудили форматирование текста и программного кода: автоматический перенос строк, выравнивание, отступы. Но если речь идет о коде, то там есть собственно код, а есть комментарии. И форматирование у них разное, причем у комментариев своя специфика: например, при разрыве строки следует, по уму, поместить символ комментария в начале новой строки... хотя зависит от типа комментария, опять же.

"// Это мост" — моё любимое.
"// Это мост" — моё любимое.

Вим умеет распознавать комментарии и форматирует их правильно. Вот примеры:

Было:
!длинный ... комментарий
Стало:
!длинный ...
!...
!... комментарий

Или выставлено значение textwidth =80 и пишется длинный комментарий. Строка будет перенесена в районе 80-го символа и к новой будет добавлен символ комментария.

Или решили Вы объединить две строки — символ комментария следует убрать.

Комментарии могут быть трех типов:

  1. Символ комментария в начале, комментарий до конца строки. Это ! в Фортране, // в С++, решетка в Перле, Питоне, bash, R и других скриптовых языках, знак % в ТеХ, * в GrADS, NB! в языке J, " в языке самого Вима...
  2. Комментарий, который начинается с некоторого символа, но на строках продолжения этот символ не нужен. Так в POD, разметке для документации Перла (удобная штука).
  3. Комментарий из трех частей, для которого задано начало, конец и пометка строк в середине. Примером служит /* */ в Си. Необязательный символ середины может использоваться для красоты:

/*
* Это комментарий
* причем красивый
*/

Но вообще, Виму он необходим, потому что иначе Вим не поймет, что это все еще комментарий. Парсить ваш текст он не обязан.

Многообразие символов для комментария описывает переменная comments , которая содержит описания комментариев через запятую. Каждое описание имеет вид флаги:строка и описывает текст или символ, обозначающий начало, конец или середину комментария. Например, :! описывает комментарии Фортрана, которые начинаются с восклицательного знака (флаги здесь не выставлены).

Флаги описывают специфику. Я не буду описывать все.

  • n позволяет комментарию быть вложенным. Тогда возможен перенос строки комментария с дополнением данным символом. Так что лучше n:! для Фортрана!
  • b требует пробел после символа комментария.
  • f означает, что только первая строка помечена как комментарий. Далее повторять не надо, но вот отступы надо сохранять.
  • s, m, e помечают начало, середину и конец трехкомпонентного комментария. Например, s:/*,m:*,e:*/ для Си. Должны идти подряд.

Примеры

b:* делает звездочку началом комментария, но только если после нее есть пробел. Так в GrADS.

n:> делает комментарии >, >>, >>>. Полезно для почты. Что приятно, разные типы комментариев не смешиваются, так что кто кому отвечал — при форматировании сохранится.

Для Фортрана добавьте комментарий, если это само не произошло, вот так:

:set comments+=n:!

В прикольном языке J комментарий начинается с текста "NB:" . Соответственно, добавить его можно так: :NB:

Аналогично, комментарий С++: n://

Как я уже рассказывал, особенности форматирования задает переменная formatoptions, в который заданы буквы, слитно или через запятую. Приведу те, что относятся к комментариям:

  • c: разрыв строк комментария по textwidth с добавлением нужного символа в начало новых строк
  • r: вставлять символ комментария при нажатии Enter в режиме вставки (если текущая строка — строка комментария).
  • o: аналогично при создании новых строк командами o и O .
  • q: включает форматирование комментариев командой gq .
  • j: убирать символ комментария при склейке строк.

Удачи, коллеги!

Оглавление рубрики и Путеводитель по каналу