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