-1

foldmethod=syntax在我的.vimrc文件中使用。它适用于像这样的 C 函数:

int some_fun(int i) {
  return i;
}

但是,它不适用于在第一行有换行符的函数:

int some_fun2(int i,
  int i2) {
  return i;
}

我可以让 Vim 理解折叠不应该从哪里开始,{而是从哪里开始函数定义?

4

1 回答 1

2

是的,但是您必须使用适当的定义来扩充syntax/c.vim语法文件。以下行负责折叠{...}块的默认行为:

syn region    cBlock      start="{" end="}" transparent fold

您必须使用考虑函数定义(您也可以在该文件中找到其语法模式)的函数来覆盖它,并将其放入~/.vim/after/syntax/c.vim. 一个挑战是函数定义的开始匹配现在将掩盖默认匹配,因此像int和函数名称这样的元素可能会失去突出显示。也许零宽度匹配可能会阻止这种情况,或者您可以使用matchgroup. 如果所有这些听起来都超出了您的想象,请不要打扰。也许你没有发现这种语法修改的事实意味着它太难了。

于 2014-12-23T09:34:01.303 回答