如何使vim的fold函数-使用foldmethod = syntax时-在if-else和struct(使用Go)的每个函数之后也隐藏一个换行符。
如何使vim的fold函数-使用foldmethod = syntax时-在if-else和struct(使用Go)的每个函数之后也隐藏一个换行符。
Answers:
这是针对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
七大洲)