2012-01-30 111 views
27

私は.vimrcを編集してvimのステータス行の色を変更しています。vimのステータスラインの色はどのように変更できますか?

auというコマンドを使用して、挿入モードに入るときと終了するときにステータスラインの色を変更しようとしました。このコマンドを使用すると、何も起こらないで:

hi StatusLine guibg=whatevercolourIwant

いかなるauコマンドなしで、直接、ステータスラインの色を変更することにより、背景は同じまま。例えば

:hi StatusLine guibg=red

を実行することで、ステータスバーの背景がまだ緑がかったまま、なぜ

は理由がありますか?

hi StatusLine ctermbg=whatever ctermfg=whatever 

guibg guifg GUIのためのものです:あなたは、端末でVimを実行している場合

答えて

35

、試してみてください。

願っています。

28

私は他のTidBITSの中で、中だどのモードに応じて、線の色を変更し、私のステータス行、のためにこれを使用します。

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に貼り付ける必要があるのvimでこの設定を使用していただき、ありがとうございますか? – 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 
関連する問題