5

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

syn keyword Pouet if

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

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

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

问题是,此代码不适用于像“(”或空格或许多空格这样的特殊字符。我的问题是:如何使像“if(”这样的句子以红色突出显示?

谢谢

4

1 回答 1

3

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

您必须:syn match改用,例如:

:syn match Pouet "\<if("

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

另一种方法是matchadd(),它位于语法高亮之上:

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

这里的问题是这些匹配是窗口本地的,不像语法高亮那样绑定到文件类型,所以当你分割窗口或在当前窗口中编辑另一个文件类型时,高亮将消失/将持续存在。这些问题可以通过 autocmds 解决,但现在变得非常复杂。

于 2012-10-11T16:00:47.763 回答