Как можно сделать функцию сворачивания vim - при использовании foldmethod = синтаксис - также скрыть по одной новой строке после каждой функции, if-else и struct (используя Go).
Как можно сделать функцию сворачивания vim - при использовании foldmethod = синтаксис - также скрыть по одной новой строке после каждой функции, if-else и struct (используя Go).
Ответы:
Вот как это сделать для C:
/usr/share/vim
) и скопируйте его (снова, под Unix) ~/.vim/syntax
.syntax region cBlock start="{" end="}" transparent fold
становится
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Здесь первый \n
соответствует символу новой строки сразу после закрывающей скобки, второй - пустой строке. Это не будет работать, если }
сопровождается, например, комментарием: блок все равно будет свернут, но следующий перевод строки не будет.
У меня нет файла синтаксиса для Go здесь (насколько я могу судить), но он должен работать аналогичным образом.
Примечание: более гибкий способ - создать новый файл ~/.vim/after/syntax
и просто изменить определение региона, но здесь я потерпел неудачу. Простое копирование определения региона не работает.
Я знаю, что он старый, но в дополнение к решению @ ansgar-esztermann:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
в ~/.vim/syntax/c.vim
сгибе новая строка (для struct
s тоже)