2012-01-30 2 views
27

나는 .vimrc을 편집하여 vim의 상태 표시 줄 색을 변경하려고합니다.vim 상태 줄 색상은 어떻게 바꿀 수 있습니까?

au 명령을 사용하여 삽입 모드를 시작하거나 종료 할 때 상태 줄의 색을 변경하려고했습니다. 이 명령만을 사용하여 발생합니다

hi StatusLine guibg=whatevercolourIwant

어떤 au 명령하지 않고, 직접 상태 표시 줄의 색상을 변경하여 배경이 동일하게 유지됩니다. 예를 들어

:hi StatusLine guibg=red,

을 실행하여, 상태 표시 줄의 배경은 여전히 ​​녹색 남아있는 이유

는 이유가 있나요?

hi StatusLine ctermbg=whatever ctermfg=whatever 

guibg guifg GUI위한 것입니다 : 당신이 터미널에서 정력을 실행하는 경우

답변

35

,보십시오.

도움이 되길 바랍니다.

28

나는 다른 맛있는 가벼운 음식 사이에있어 어떤 모드에 따라 라인의 색상을 변경 내 상태 표시 줄, 이것을 사용

function! InsertStatuslineColor(mode) 
    if a:mode == 'i' 
    hi statusline guibg=Cyan ctermfg=6 guifg=Black ctermbg=0 
    elseif a:mode == 'r' 
    hi statusline guibg=Purple ctermfg=5 guifg=Black ctermbg=0 
    else 
    hi statusline guibg=DarkRed ctermfg=1 guifg=Black ctermbg=0 
    endif 
endfunction 

au InsertEnter * call InsertStatuslineColor(v:insertmode) 
au InsertLeave * hi statusline guibg=DarkGrey ctermfg=8 guifg=White ctermbg=15 

" default the statusline to green when entering Vim 
hi statusline guibg=DarkGrey ctermfg=8 guifg=White ctermbg=15 

" Formats the statusline 
set statusline=%f       " file name 
set statusline+=[%{strlen(&fenc)?&fenc:'none'}, "file encoding 
set statusline+=%{&ff}] "file format 
set statusline+=%y  "filetype 
set statusline+=%h  "help file flag 
set statusline+=%m  "modified flag 
set statusline+=%r  "read only flag 

" Puts in the current git status 
    if count(g:pathogen_disabled, 'Fugitive') < 1 
     set statusline+=%{fugitive#statusline()} 
    endif 

" Puts in syntastic warnings 
    if count(g:pathogen_disabled, 'Syntastic') < 1 
     set statusline+=%#warningmsg# 
     set statusline+=%{SyntasticStatuslineFlag()} 
     set statusline+=%* 
    endif 

set statusline+=\ %=      " align left 
set statusline+=Line:%l/%L[%p%%]   " line X of Y [percent of file] 
set statusline+=\ Col:%c     " current column 
set statusline+=\ Buf:%n     " Buffer number 
set statusline+=\ [%b][0x%B]\    " ASCII and byte code under cursor 
+0

이 놀라운, 당신은 – tux91

+0

그래서이의 .vimrc 파일에 붙여 넣을 수 있습니다 정력이 구성을 사용하는 감사는? – Cristian

+0

예 비슷한 정보는 http://vim.wikia.com/wiki/Change_statusline_color_to_show_insert_or_normal_mode –

0

이 실제로 코드의 멋진 비트입니다!

나는 나의 필요에 맞게 수정했습니다. 버퍼 상태에 몇 가지 문구를 추가했습니다 :

[saved] 또는 [modified].

버퍼 변경 이벤트를 기준으로 상태 표시 줄 색을 설정했습니다. 변경되지 않은/보통의 경우 DarkSlateGray입니다. OrangeRed4 수정이 완료된 경우. 여기

내 수정 된 코드입니다 :

" Some funky status bar code its seems 
" https://stackoverflow.com/questions/9065941/how-can-i-change-vim-status-line-colour 
set laststatus=2   " set the bottom status bar 

function! ModifiedColor() 
    if &mod == 1 
     hi statusline guibg=White ctermfg=8 guifg=OrangeRed4 ctermbg=15 
    else 
     hi statusline guibg=White ctermfg=8 guifg=DarkSlateGray ctermbg=15 
    endif 
endfunction 

au InsertLeave,InsertEnter,BufWritePost * call ModifiedColor() 
" default the statusline when entering Vim 
hi statusline guibg=White ctermfg=8 guifg=DarkSlateGray ctermbg=15 

" Formats the statusline 
set statusline=%f       " file name 
set statusline+=[%{strlen(&fenc)?&fenc:'none'}, "file encoding 
set statusline+=%{&ff}] "file format 
set statusline+=%y  "filetype 
set statusline+=%h  "help file flag 
set statusline+=[%{getbufvar(bufnr('%'),'&mod')?'modified':'saved'}]  
"modified flag 

set statusline+=%r  "read only flag 

set statusline+=\ %=      " align left 
set statusline+=Line:%l/%L[%p%%]   " line X of Y [percent of file] 
set statusline+=\ Col:%c     " current column 
set statusline+=\ Buf:%n     " Buffer number 
set statusline+=\ [%b][0x%B]\    " ASCII and byte code under cursor 
관련 문제