pep*_*ico 7 vim syntax-highlighting vim-syntax-highlighting
我正在尝试在我的.vimrc:
hi link SyntasticErrorLine SignColumn
hi link SyntasticErrorSign SignColumn
hi SyntasticErrorSign guifg=red ctermfg=red
Run Code Online (Sandbox Code Playgroud)
我想要的是具有SyntasticErrorSign与背景相同SignColumn但具有自定义前景色的突出显示组。
Vim 文档说:
- 只要你对一个链接的组使用 ":highlight" 命令,链接就会被删除。
所以,我这样做的方式无论如何都行不通,有没有办法实现这一目标?
如果您想从其他组“窃取”某些 hl-attribute 值,则不必这样做link,您只需获取自己使用的值即可。
对于您的问题,请尝试将此行添加到您的 .vimrc 文件中。
exec 'hi SyntasticErrorSign guifg=red ctermfg=red ' . (has("gui_running")? 'guibg=':'ctermbg=') . synIDattr(hlID('SignColumn'),'bg')
Run Code Online (Sandbox Code Playgroud)
该生产线集fg(gui and cterm)的SyntasticErrorSign组作为red,和用途组相同的背景颜色SignColumn,取决于你是在gvim和vim。我认为它应该是你正在寻找的。
对于这些功能,您可以只:h xxx()获取详细信息。
@Kent 的回答很好,但是synIDattr当不传递mode参数时似乎存在问题,它无法在 GUI 模式 (gvim) 下返回属性。我是从vim-arline 插件源中了解到的。
我已经解决了我的问题:
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')
Run Code Online (Sandbox Code Playgroud)