我希望我的 vim 在我的 .c 文件中以红色突出显示 Pouet 组中的一些关键字,例如 'if('。
我想出了如何突出显示:
syn keyword Pouet if
(这是我的 ~/.vim/syntax/c.vim)
与
highlight Pouet term=NONE cterm=NONE Ctermfg=160 ctermbg=NONE gui=NONE
(这是我的 .vimrc 的一部分)
问题是,此代码不适用于特殊字符,如“(”或空格或多个空格。
我的问题是:如何使像“if(”这样的句子以红色突出显示?
谢谢
最佳答案
:syn keyword
仅适用于关键字字符(由 'iskeyword'
设置定义)和 (
通常不包含。
您必须使用 :syn match
相反,例如:
:syn match Pouet "\<if("
如果您自己定义语法,这很好。如果除了现有的 C 语法高亮之外还需要此功能,则需要分析原始语法组并添加诸如
containedin=cConditional
之类的内容。 ,也许你甚至不得不修改原来的语法定义。另一种选择是
matchadd()
,它位于语法高亮之上::call matchadd('Pouet', '\<if(')
这里的问题是这些匹配是窗口本地的,不像语法高亮那样绑定(bind)到文件类型,所以当你分割窗口或在当前窗口中编辑另一个文件类型时,高亮将消失/将持续存在。这些问题可以通过 autocmds 解决,但现在变得非常复杂。
关于syntax - vim 具有特定字符的自己的突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843448/