vim拥有特定角色的突出显示

时间:2012-10-11 15:41:59

标签: syntax keyword vim highlight

我希望我的vim用红色突出显示Pouet组中的一些关键字,例如我的.c文件中的'if(')。 我想出了如何突出显示:

syn keyword Pouet if

(这是我的〜/ .vim / syntax / c.vim)

highlight Pouet term=NONE cterm=NONE Ctermfg=160 ctermbg=NONE gui=NONE

(这是我的.vimrc的一部分)

问题是,此代码不适用于特殊字符,如'('或空格或许多空格。 我的问题是:如何制作像'if('以红色突出显示?

的句子

由于

1 个答案:

答案 0 :(得分:2)

:syn keyword仅适用于关键字字符(由'iskeyword'设置定义),(通常不包含。

您必须使用:syn match代替,例如:

:syn match Pouet "\<if("

如果您自己定义语法,这很好。如果除了现有的C语法高亮显示之外还需要此功能,则需要分析原始语法组并添加containedin=cConditional之类的内容,甚至可能需要修改原始语法定义。

替代方案是matchadd(),它在语法高亮显示之上:

:call matchadd('Pouet', '\<if(')

这里的问题是这些匹配是窗口本地的,没有绑定到文件类型,如语法高亮,所以当您在当前窗口中拆分窗口或编辑另一个文件类型时,突出显示将会消失/将持续存在。这些问题可以解决autocmds,但现在它变得非常复杂。