Как частично "связать" подсветку группы?
Я пытаюсь сделать это на моем .vimrc
:
hi link SyntasticErrorLine SignColumn
hi link SyntasticErrorSign SignColumn
hi SyntasticErrorSign guifg=red ctermfg=red
Я хочу иметь SyntasticErrorSign
выделение группы с тем же фоном, что и SignColumn
но с пользовательскими цветами переднего плана.
Vim Docs говорит:
- Как только вы используете команду ":highlight" для связанной группы, ссылка удаляется.
Итак, то, как я это делаю, в любом случае не сработает, есть ли способ добиться этого?
3 ответа
@Kent ответ был хорошим, но, похоже, проблема в synIDattr
когда кто-то не проходит mode
аргумент, он не может вернуть атрибут в режиме графического интерфейса (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')
Если вы хотите "украсть" какое-либо значение атрибута 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
и использует тот же цвет bg группы SignColumn
, зависит от вас в gvim
или же vim
, Я думаю, что это должно быть то, что вы ищете.
Для этих функций вы могли бы просто :h xxx()
получить подробную информацию.
Это делает то, что вы хотите:
hi SyntasticErrorSign guifg=red ctermfg=red
hi! link SyntasticErrorSign SignColumn
!
принудительно устанавливает ссылку, даже если у вас уже есть атрибуты, установленные в группе выделения.