我有一个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
Run Code Online (Sandbox Code Playgroud)
好吧,那些都完美无缺.但如果我想这样做:
hi Type guifg=#008787 guibg=NONE guisp=NONE gui=bold ctermfg=30 ctermbg=NONE cterm=bold
hi def link Identifier Type
Run Code Online (Sandbox Code Playgroud)
要么:
hi Keyword guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=136 ctermbg=NONE cterm=bold
hi def link Statement Keyword
Run Code Online (Sandbox Code Playgroud)
突然,vim认为我因为想要链接这些颜色而疯狂,它会略微改变它们.例如,Type颜色通常是青色,但是当链接到Type时,Identifier是浅蓝色.关键字颜色为深黄色,但链接到关键字时,Statement变为浅黄色.我没有在文件中定义"Identifier"或"Statement"颜色的任何其他内容.如果我专门定义每个令牌的颜色(这是很多重复),这不会发生.vim试图告诉我,我想要链接这些颜色是愚蠢的,我是否误解了高亮连接的功能,我做错了什么,或者这是一个错误(我怀疑)?
如果vim故意改变这些,有没有办法让它停止?
hi您可以使用hi!以允许链接覆盖任何默认值,而不是.
hi Type guifg=#008787 guibg=NONE guisp=NONE gui=bold ctermfg=30 ctermbg=NONE cterm=bold
hi! link Identifier Type
Run Code Online (Sandbox Code Playgroud)
经过广泛的测试和研究后,似乎基本的默认语法突出显示组将始终定义突出显示.例如,注释,函数等始终具有突出显示的定义; 这样做hi clear只是将它们设置回默认值.你不能,如果集团已拥有高亮,除非你使用的链接一组!标志highlight.这就是为什么它适用于TypeDef但不适用于标识符:标识符具有定义的默认颜色; TypeDef没有.