如何部分“链接”突出显示组?

时间:2013-09-12 21:52:42

标签: vim syntax-highlighting vim-syntax-highlighting

我正在尝试在.vimrc上执行此操作:

hi link SyntasticErrorLine SignColumn
hi link SyntasticErrorSign SignColumn
hi SyntasticErrorSign guifg=red ctermfg=red

我想要的是让SyntasticErrorSign突出显示组与SignColumn具有相同的背景,但具有自定义前景色。

Vim docs说:

  

- 只要对链接组使用“:highlight”命令,就会删除该链接。

所以,我这样做的方式无论如何都行不通,有没有办法实现呢?

3 个答案:

答案 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颜色,具体取决于您在gvimvim。我认为应该是你在寻找的东西。

对于这些功能,您只需: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

即使您已在突出显示组中设置了属性,!也会强制链接。