微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VIM语法:条件函数着色

我正在自定义标准的“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,cDefine

最后,为它链接或定义一个不同的高亮组,以便它实际上看起来不同:

:hi link cFunctionUse Special

您可以将它们放入〜/ .vim / after / Syntax / c.vim中,以便它们自动添加认的C语法中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐