Синтаксис foldmethod
отличный, но иногда я просто хочу сложить комментарии в исходном файле.
Также синтаксическое сворачивание комментариев работает только для комментариев в стиле C, например:
/*
...
*/
Но не для комментария, как:
//
//
// ...
//
Или даже для блоков комментариев в не-C-подобных языках, таких как:
#
#
# ...
#
Как я могу настроить это с vim?
Ответы:
Складывать только комментарии довольно просто, используя
foldmethod=expr
:Это просто проверит, начинается ли строка с любого количества пробелов + символ комментария. Обратите внимание, что это довольно наивно и может работать не для всех языков. Так что вы можете использовать autocmd, чтобы быть более конкретным:
Для получения дополнительной информации о fold-expr см .:
:help fold-expr
:help folding-functions
Использование синтаксиса складывания и комментарий складывание более активное участие; это потребует изменения файла синтаксиса
/usr/share/vim/vim74/syntax/*.vim
и будет зависеть от языка, который вы используете.Обратите внимание, что некоторые типы файлов уже делают это! Например из
ruby.vim
:источник
Мне нравится сворачивание с отступом, но включая комментарии в сгибе (я имею в виду, что каждый комментарий получает тот же уровень сгиба, что и предыдущая строка).
К сожалению, ключевое слово foldignore работает только для однострочных комментариев. Поэтому я сворачиваю с expr в vimrc:
Последний блок:
Возвращает базовый уровень в отступе.
И другой:
Проверяет, является ли первый символ строки комментарием с синтаксисом. Так что это хороший способ объединить отступы и свертывание синтаксиса с выражением, самым продвинутым свертыванием.
Обратите внимание, что вы также можете «установить foldtext» в зависимости от того, как вы хотите, чтобы результат выглядел.
источник
Вы можете визуально выбрать закомментированный блок с помощью,
vac
а затем создать ручную складкуzf
.Текстовый объект комментария может быть расширением языка до набора стандартных текстовых объектов vim. Протестировал его с помощью синтаксиса Go.
источник
ac
не является встроенным. Но с комментариями tpopegc
это текстовый объект. Так что лучшие решения естьzfac
,zfgc
илиzfip
в худшем случае