在gvim中突出显示特定关键字集

时间:2017-10-12 06:30:01

标签: vim vim-syntax-highlighting

我尝试通过将它们添加到.vimrc,colorscheme文件以及syntax.vim(我一次更改一个,而不是完全一个)来突出显示特定单词。

syn match mygroupwords '\c\<\(-word1\|-word2\)'            
hi  def link mygroupwords colo_words12                                      
hi colo_words12  guifg=red1   gui=bold  guibg=white

但不知怎的,它似乎被默认语法高亮显示

覆盖

我需要突出显示关键字,不论其颜色方案或文件类型如何 - 防爆; -word1,-word2

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

对失败尝试的解释

colorscheme 只提供预定义高亮组的颜色定义;这是实际语法匹配的错误位置! ~/.vimrc是第一个读取的配置;如果检测到文件类型并加载了相应的语法脚本,则会覆盖您的语法定义。

语法扩展

如果所需的突出显示是现有语法的扩展,则可以将:syntax match命令放在目录之后的语法脚本中。例如,要扩展Python语法,请将其放在~/.vim/after/syntax/python.vim中。如果原始语法模糊匹配,那可能仍然会失败;有时,这可以通过containedin=...

解决

独立标记

如果您的突出显示与语法和文件类型无关,则会有不同的内置机制::match(和:2match以及:call matchadd(...)的其他变体):

:match mygroupwords /\c\<\(-word1\|-word2\)/

这是语法高亮的基础(并且独立于)。但是,它是当前窗口的本地。因此,如果您将其放入.vimrc,它只会影响第一个窗口(但在那里查看的任何文件)。要将此全局应用于窗口拆分和标签页,您必须使用:autocmds。让这一点完全正确并非易事。如果您需要这样一个完整的解决方案,请查看我的Mark plugin;这支持多种颜色,允许使用:[N]Mark /{pattern}/进行预设(类似于:match),并在所有窗口中突出显示。