我正在尝试在.vimrc
上执行此操作:
hi link SyntasticErrorLine SignColumn
hi link SyntasticErrorSign SignColumn
hi SyntasticErrorSign guifg=red ctermfg=red
我想要的是让SyntasticErrorSign
突出显示组与SignColumn
具有相同的背景,但具有自定义前景色。
Vim docs说:
- 只要对链接组使用“:highlight”命令,就会删除该链接。
所以,我这样做的方式无论如何都行不通,有没有办法实现呢?
答案 0 :(得分:3)
如果你想从其他组“窃取”一些hl属性值,你不必link
,只需获得自己使用的值。
对于您的问题,请尝试将此行添加到.vimrc文件中。
exec 'hi SyntasticErrorSign guifg=red ctermfg=red ' . (has("gui_running")? 'guibg=':'ctermbg=') . synIDattr(hlID('SignColumn'),'bg')
fg(gui and cterm)
组的SyntasticErrorSign
行设为red
,并使用与SignColumn
组相同的bg颜色,具体取决于您在gvim
或vim
。我认为应该是你在寻找的东西。
对于这些功能,您只需:h xxx()
即可获取详细信息。
答案 1 :(得分:2)
@Kent answer很好,但是当synIDattr
没有传递mode
参数时,hi link SyntasticErrorLine SignColumn
exec 'hi SyntasticErrorSign guifg=red ctermfg=red' .
\' guibg=' . synIDattr(synIDtrans(hlID('SignColumn')), 'bg', 'gui') .
\' ctermbg=' . synIDattr(synIDtrans(hlID('SignColumn')), 'bg', 'cterm')
似乎存在问题,它无法在GUI模式下返回属性(gvim)。我是从vim-arline plugin sources学到的。
我用以下方法解决了我的问题:
{{1}}
答案 2 :(得分:-1)
这样做你想要的:
hi SyntasticErrorSign guifg=red ctermfg=red
hi! link SyntasticErrorSign SignColumn
即使您已在突出显示组中设置了属性,!
也会强制链接。