我的 vim 配置中有这些设置,它获取环境变量并使用它们来设置 ale linting 错误的颜色:
" ==================================================================================================
" Theme settings
" ==================================================================================================
let vim_theme=$VIM_THEME
let vim_ale_error_fg=$VIM_ALE_ERROR_FG
let vim_ale_error_bg=$VIM_ALE_ERROR_BG
let vim_ale_warning_fg=$VIM_ALE_WARNING_FG
let vim_ale_warning_bg=$VIM_ALE_WARNING_BG
if vim_theme == 'gruvbox'
if has_key(g:plugs, 'gruvbox')
colorscheme gruvbox
let g:gruvbox_italic = 1
endif
if has_key(g:plugs, 'vim-airline')
let g:airline_theme='gruvbox'
endif
if has_key(g:plugs, 'ale')
highlight ALEErrorSign guifg=vim_ale_error_fg guibg=vim_ale_error_bg
highlight ALEWarningSign guifg=vim_ale_warning_fg guibg=vim_ale_warning_bg
endif
endif
我已经检查过,变量可用:
echo $VIM_ALE_ERROR_FG
#fb4934
那么为什么它们没有被应用呢?该if vim_theme == 'gruvbox'
线工作正常,但设置颜色却不行。
答案1
好的,我知道了。高亮不接受变量作为参数,因此您需要使用:exe
来绕过它。所以这确实有效:
if has_key(g:plugs, 'ale')
exe 'highlight ALEErrorSign guifg=' . vim_ale_error_fg 'guibg=' . vim_ale_error_bg
exe 'highlight ALEWarningSign guifg=' . vim_ale_warning_fg 'guibg=' . vim_ale_warning_bg
endif