Все комментарии можно удалить из источника с помощью следующей команды:
:%s/\/\*\_.\{-}\*\/\n\{,1}\|^\s*\/\/.*\n\|\s*\/\/.*//
Это можно затем отменить с помощью команды u
, предполагая, что никакие другие действия отменены не будут.
Поскольку регулярные выражения vi могут быть чрезвычайно загадочными, ниже приводится объяснение каждой части.Все регулярное выражение разделено на три части, разделенные оператором ИЛИ (\|
).
\/\*\_.\{-}\*\/\n\{,1}
Это соответствует блочным комментариям вида /* ... */
.Он соответствует строке '/ *' (\/\*
), за которой следует ноль или более любого символа, включая новую строку, но соответствует как можно меньшему количеству (\_.\{-}
), за которым следует ноль или одна новая строка (\n\{,1}
).Причина, по которой он соответствует нулю или одной новой строке, заключается в обработке как случая, когда код находится в той же строке, что и комментарий, так и случая, когда комментарий находится в отдельной строке.
^\s*\/\/.*\n
Этосопоставлять комментарии формы //...
, где комментарий находится на отдельной строке.Он соответствует нулю или нескольким пробельным символам, которые начинаются с начала строки (^\s*
), за которой следует строка «//» (\/\/
), затем ноль или более любого символа (.*
), заканчивающегосяновая строка (\n
).
\s*\/\/.*
Соответствует комментариям в форме //...
, где комментарий следует за кодом.Он соответствует любому количеству пробелов (\s*
), за которым следует строка //
(\/\/
), а затем любое количество символов, не являющихся символом новой строки (.*
).
Это лучший вариантможет придумать на данный момент, если я смогу придумать способ скрыть, а не удалить комментарии, я обновлю этот пост.
Обновление: возможный способ просто «скрыть» комментарии может бытьокрасить их так же, как фон.Это сделало бы их невидимыми.Однако в настоящее время я не знаю, насколько осуществима эта идея или насколько хорошо она будет обобщена.Я не знаю достаточно о цветах в vim, чтобы написать скрипт для этого.