gpt4 book ai didi

c - VIM 语法 : conditional function coloring

转载 作者:太空狗 更新时间:2023-10-29 15:08:11 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com