syntax - vim 具有特定字符的自己的突出显示

标签 syntax keyword vim highlight

我希望我的 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/

相关文章:

actionscript-3 - ActionScript 3和驼峰包名称

python - 为什么 Python 中没有 "and"和 "or"运算符?

vim - 如何将拉出的文本复制到 VI 命令提示符

c - C语言的语法错误

python - 名称错误 : name '_name_' is not defined

asp.net - 使用 SQL Server 进行关键字搜索

python - 构建标签云的巧妙方法? - Python

python - Vim 中的 w 命令不能与 Python 一起正常工作

regex - 如何在vim中使用正则表达式来替换递增的数字变量

c++ - 为什么这个 C++ 代码可以编译?它有什么作用?