vimrc에서 사용자 지정 강조 표시가 지워지거나 기본값으로 재설정되는 이유는 무엇입니까?


10

%1*예를 들어 다음 과 같이 내 상태 표시 줄을 강조 표시하고 싶습니다 .

set statusline=%1*%f%0*
highlight User1 ctermbg=0 ctermfg=10 cterm=bold

그러나 이것은 항상 "빈"(기본 터미널 색상)으로 표시됩니다.

여기에 이미지 설명을 입력하십시오

내가 입력하면 :highlight User1, 그것은 보여 User1 xxx cleared, 내가 입력하면 :highlight User1 ctermbg=0 ctermfg=10 cterm=bold명령 창에서이 작업에 보인다.

.vimrc파일에 어떻게 넣을 수 있습니까?

테스트에 사용한 전체 vimrc 파일 :

set nocompatible
set background=light
colorscheme default
set laststatus=2
set statusline=%1*%f%0*

highlight User1 ctermbg=0 ctermfg=10 cterm=bold

답변:


13

문제는 많은 (모든?) 색상 화학자가 highlight clear고유 한 색상을 설정하기 전에 모든 하이라이트를 지우는 것 입니다. 예를 들면 다음과 /usr/share/vim/vim74/colors/peachpuff.vim같습니다.

" First remove all existing highlighting.
set background=light
hi clear
if exists("syntax_on")
  syntax reset
endif

let colors_name = "peachpuff"

hi Normal guibg=PeachPuff guifg=Black

hi SpecialKey term=bold ctermfg=4 guifg=Blue
" ... Many more highlights follow ...

이것은 또한User1..9 그룹 정리합니다 (IMHO는 그다지 이해가되지 않습니다).

해결책은 autocmd 에 사용자 지정 User1..9강조 표시를하는 것 ColorScheme입니다. 보낸 사람 :help ColorScheme:

색 구성표를로드 한 후 :colorscheme패턴은 색상 표 이름과 일치합니다. <afile>이 옵션이 설정된 실제 파일 이름과 <amatch>새 색상 표 이름에 사용할 수 있습니다.

따라서 "bare" highlight명령 을 사용하는 대신 다음을 사용하십시오 .

autocmd ColorScheme *
        \ highlight User1 ctermbg=0 ctermfg=10 cterm=bold |
        \ highlight User2 ctermbg=0 ctermfg=9 cterm=bold

색상을 자주 전환하면 다음을 사용할 수도 있습니다.

autocmd ColorScheme colorscheme_one_name  highlight User1 ctermbg=0 ctermfg=10 cterm=bold
autocmd ColorScheme another_scheme        highlight User1 ctermbg=0 ctermfg=11 cterm=bold

특정 색상과 일치하는 색상을 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.