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

관련 정보