Vim语法突出显示“hi def link”会更改某些映射的颜色

时间:2015-06-30 18:20:17

标签: vim colors

我有一个vim语法颜色文件,其中包含以下行:

hi Function guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold           
hi def link Define         Function                                                                                                                                    
hi def link TypeDef        Function
好的,那些都完美无缺。但如果我想这样做:

hi Type guifg=#008787 guibg=NONE guisp=NONE gui=bold ctermfg=30 ctermbg=NONE cterm=bold
hi def link Identifier     Type

或者:

hi Keyword guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=136 ctermbg=NONE cterm=bold
hi def link Statement      Keyword

突然,vim认为我因为想要链接这些颜色而疯狂,而稍微改变了它们。例如,Type颜色通常是青色,但是当链接到Type时,Identifier是浅蓝色。关键字颜色为深黄色,但链接到关键字时,Statement变为浅黄色。我没有在文件中定义“Identifier”或“Statement”颜色的任何其他内容。如果我专门定义每个令牌的颜色(这是很多重复),这不会发生。 vim试图告诉我,我想要链接这些颜色是愚蠢的,我误解了高亮连接的功能,我做错了什么,或者这是一个错误(我怀疑)?

如果vim故意改变这些,有没有办法让它停止?

1 个答案:

答案 0 :(得分:6)

您可以使用wr代替hi来覆盖任何默认值。

hi!

经过广泛的测试和研究后,似乎基本的默认语法突出显示组将始终定义突出显示。例如,评论,功能等始终已突出显示;执行hi Type guifg=#008787 guibg=NONE guisp=NONE gui=bold ctermfg=30 ctermbg=NONE cterm=bold hi! link Identifier Type 只需将它们设置为默认值。除非您使用hi clear标记!,否则如果该组已经突出显示,则无法链接组。这就是为什么它适用于TypeDef但不适用于标识符:标识符具有定义的默认颜色; TypeDef没有。