我有一个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故意改变这些,有没有办法让它停止?
答案 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没有。