我正在自定义标准的“c.vim”语法文件以调整我的 C 代码的可视化。 我想区分“被调用函数”和“声明函数”的颜色。
例子:
int declared_function()
{
int m;
m = called_function();
return (m)
}
我深入阅读了 VIM 文档、数以百万计的论坛和谷歌搜索结果,但我尝试的所有解决方案均无效。
为了恢复,我这样做了:
为了考虑大括号内的所有代码,我以递归方式定义了一个区域:
syn region Body start="{" end="}" contains=Body
然后我通过VIM模式定义了一个通用的函数语法:
syn match cFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
我这样做是因为我认为我可以在 .vimrc 文件中的“if else”条件下将两者结合起来......但是在一整天的失败测试之后我需要某人的帮助,他可以告诉我它是否是可能以及如何去做。
谢谢大家
最佳答案
你非常接近。首先,您不需要递归定义,但在其中包含所有其他顶级 C 语法元素,以及您将为被调用函数定义的特殊组:
:syn region Body start="{" end="}" contains=TOP,cFunctionUse
实际上,从头开始,默认的 $VIMRUNTIME/syntax/c.vim
已经定义了一个 cBlock
语法组。
然后,定义包含在 cBlock
组中的不同 语法组。
:syn match cFunctionUse "\<\h\w*\>\(\s\|\n\)*("me=e-1 contained containedin=cBlock contains=cType,cDelimiter,cDefine
最后,为它链接或定义一个不同的高亮组,这样它实际上看起来就不同了:
:hi link cFunctionUse Special
您可以将它们放入 ~/.vim/after/syntax/c.vim
,这样它们就会自动添加到默认的 C 语法中。
关于c - VIM 语法 : conditional function coloring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20891069/