Neovim에서 색 구성표를 올바르게 표시할 수 없습니다.

Neovim에서 색 구성표를 올바르게 표시할 수 없습니다.

나는 한동안 neovim 색상 구성표를 가지고 놀았지만 미리보기와 동일하게 보이도록 만들 수 없습니다.

저는 osx에서 Terminal.app을 사용하고 있는데 256 색상 제한 문제라고 생각해서 트루 컬러를 지원하는 iterm2로 옮겼습니다. 상황이 조금 개선되었지만 색상 구성표는 스크린샷에서 본 것과 전혀 달랐습니다!

여기에 이미지 설명을 입력하세요.

iterm2 + neovim의 Solarized 테마는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

이는 다음과 관련이 있습니다.https://github.com/altercation/vim-colors-solarized스크린샷!

나는 성공하지 못한 채 google foo를 사용했습니다. 확실히 색상을 정확하게 얻는 방법이 있습니다. 어떤 아이디어가 있나요?

  "*****************************************************************************
"" Plug install packages
"*****************************************************************************

" Specify a directory for plugins
call plug#begin('~/.config/nvim/plugged')

Plug 'tomasr/molokai'
Plug 'dracula/vim'
Plug 'justb3a/vim-smarties'
Plug 'tyrannicaltoucan/vim-quantum' " let g:quantum_black = 1
Plug 'mhartington/oceanic-next'
Plug 'altercation/vim-colors-solarized'
" Plug 'vim-scripts/CSApprox'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'scrooloose/nerdtree'
Plug 'airblade/vim-gitgutter'
Plug 'bronson/vim-trailing-whitespace'
Plug 'editorconfig/editorconfig-vim'
Plug 'Raimondi/delimitMate'
Plug 'scrooloose/syntastic'
Plug 'Yggdroot/indentLine'
Plug 'tpope/vim-commentary'
Plug 'sheerun/vim-polyglot'
Plug 'valloric/matchtagalways'

" Initialize plugin system
call plug#end()

"*****************************************************************************
"" Visual Settings
"*****************************************************************************
set number
set ruler
set nowrap

let $NVIM_TUI_ENABLE_TRUE_COLOR=1 
set termguicolors " unfortunately doesn't work in terminal.app - needs true color support, like iterm2 but it lags and diff in visuals is not that much so sticking to terminal.app for now

set background=dark
colorscheme solarized

"*****************************************************************************
"" NERDTree config
"*****************************************************************************

" open NERDTree automatically when vim starts up on opening a directory
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif

" keep focus on NERDTree when opening a directory
autocmd VimEnter * wincmd p

" close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif

"*****************************************************************************
"" Optimizations
"*****************************************************************************

set lazyredraw

let g:python_host_skip_check = 1
let g:python3_host_skip_check = 1

"*****************************************************************************
"" syntastic
"*****************************************************************************

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

"*****************************************************************************
"" yank and cut to osx clipboard
"*****************************************************************************

noremap YY "+y<CR>
noremap XX "+x<CR>

"*****************************************************************************
"" indent
"*****************************************************************************

" tabs
set listchars=tab:˗\ ,eol:¬
set list

" spaces
let g:indentLine_enabled = 1
let g:indentLine_concealcursor = 0
let g:indentLine_char = '·'
let g:indentLine_faster = 1

set tabstop=2

"*****************************************************************************
"" matchtagalways
"*****************************************************************************

let g:mta_filetypes = { 'html' : 1, 'xhtml' : 1, 'xml' : 1, 'jinja' : 1, 'php': 1 }

"*****************************************************************************
"" ctrlp
"*****************************************************************************

set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__
let g:ctrlp_custom_ignore = '\v[\/](node_modules|target|dist)|(\.(swp|tox|ico|git|hg|svn))$'

답변1

각 색상 구성표는 GUI 색상과 관계없이 터미널 색상을 정의합니다. 전통적으로 터미널은 최대 256가지 색상을 지원했으며 대부분 16가지 색상 팔레트를 사용했습니다. GUI는 일반적으로 24비트 색상을 지원하므로 Vim(및 Neovim)은 색상 구성표 작성자를 위해 별도의 강조 표시 설정을 제공합니다.

오늘날 많은 최신 터미널도 24비트 색상을 지원합니다. 하지만 이러한 터미널에서 실행하더라도 네오빔은 일반적으로 터미널 색 구성표와 256색 렌더링 방식을 사용합니다. 이 설정

set termguicolors

Neovim이 GUI 색 구성표 설정을 사용하여 24비트 색상을 렌더링하도록 합니다. 그러나 이확실히Neovim이 실제로 GUI에서 실행 중인 것처럼 가장하게 합니다. 즉, has('gui_running')옳은 것은 여전히 ​​잘못된 것입니다.

불행하게도 GUI 모드와 24비트 색상 모드의 통합으로 인해 일부 플러그인이 termguicolors이를 올바르게 처리하지 못할 수도 있습니다. 귀하의 상황은 그러한 시나리오입니다. vim-solarized-colors의 현재 구현은 24비트 색상 모드에 대한 올바른 색상을 설정하는 데 사용되므로 has('gui_running')Neovim이 24비트 색상을 사용하지만 GUI에서 실행되지 않으면 잘못된 값이 이상하게 혼합되어 설정됩니다.

다행스럽게도 수정 방법은 매우 간단합니다. vim-solarized-colors를 &termguicolors적절한 위치에 패치하면 됩니다. 패치는 다음에서 찾을 수 있습니다.이번에 제출하세요내 플러그인 지점에. 그런데 이 분기에는 유용하다고 생각할 수 있는 다른 패치가 포함되어 있습니다. Vim 구성에서 자유롭게 지정하거나 필요한 경우 자신의 버전에 패치를 적용하세요.

관련 정보