使vim折叠也可以在功能后隐藏换行符


8

如何使vim的fold函数-使用foldmethod = syntax时-在if-else和struct(使用Go)的每个函数之后也隐藏一个换行符。

Answers:


4

这是针对C的方法:

  • 获取原始语法文件(在Unix下,通常在中找到/usr/share/vim),然后将其复制到(再次在Unix下)~/.vim/syntax
  • 在cBlock区域定义中更改“结束”模式:
syntax region cBlock    start="{" end="}" transparent fold

变成

syntax region cBlock    start="{" end="}\(\n\n\)\?" transparent fold

在这里,第一个\n匹配右括号后的换行符,第二个匹配空行。如果}后面跟随例如注释,这将不起作用:块仍会折叠,但下面的换行符不会。

我在这里没有Go的语法文件(据我所知),但是它应该以类似的方式工作。

注意:更灵活的方法是在处创建一个新文件~/.vim/after/syntax并仅更改区域定义,但是在这里我没有成功。仅复制区域定义不起作用。


0

我知道它很旧,但除了@ 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七大洲)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.