9

我正在尝试在我的.vimrc

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

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

Vim 文档说:

- 一旦你对一个链接组使用":highlight" 命令,链接就会被删除。

所以,我这样做的方式无论如何都行不通,有没有办法做到这一点?

4

3 回答 3

6

@Kent 的回答很好,但似乎有一个问题,synIDattr当一个人不传递mode参数时,它无法在 GUI 模式(gvim)中返回属性。我从vim-arline plugin sources学到了这一点。

我已经解决了我的问题:

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')
于 2013-09-13T01:47:17.510 回答
5

如果您想从其他组中“窃取”一些 hl 属性值,则不必这样做link,您只需获取自己使用的值即可。

对于您的问题,请尝试将此行添加到您的 .vimrc 文件中。

exec 'hi SyntasticErrorSign guifg=red ctermfg=red ' . (has("gui_running")? 'guibg=':'ctermbg=') . synIDattr(hlID('SignColumn'),'bg')

组的线组为fg(gui and cterm),并使用相同的组的 bg 颜色,取决于你在或。我认为它应该是你正在寻找的。SyntasticErrorSignredSignColumngvimvim

对于这些功能,您可以只:h xxx()获取详细信息。

于 2013-09-12T22:35:52.577 回答
-1

这可以满足您的要求:

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

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

于 2014-06-04T13:26:30.537 回答