让 vim 折叠也隐藏函数后的换行符

让 vim 折叠也隐藏函数后的换行符

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

答案1

以下是 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并仅更改区域定义,但我在这里没有成功。仅仅复制区域定义是行不通的。

相关内容