加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

VIM语法:条件函数着色

发布时间:2020-12-15 22:34:47 所属栏目:安全 来源:网络整理
导读:我正在自定义标准的“c. vim”语法文件,以便调整我的C代码的可视化. 我想区分“被调用函数”的颜色与“声明函数”之一. 例: int declared_function(){ int m; m = called_function(); return (m)} 我深入阅读了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 "&;hw*&;(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 "&;hw*&;(s|n)*("me=e-1 contained containedin=cBlock contains=cType,cDefine

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

:hi link cFunctionUse Special

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读