vimが私の設定にこれらの色変数を適用しないのはなぜですか?

vimが私の設定にこれらの色変数を適用しないのはなぜですか?

環境変数を取得し、それを使用してエールリンティングエラーの色を設定するvim設定には、次の設定があります。

" ==================================================================================================
" 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

また見なさい:https://stackoverflow.com/a/2211738/5918874

関連情報