.vimrc
を編集して、vimのステータスラインの色を変更しようとしています。
コマンドau
を使用して、挿入モードを開始または終了するときにステータス行の色を変更しようとしました。このコマンドを使用しても何も起こりません。
hi StatusLine guibg=whatevercolourIwant
au
コマンドを使用せずに、ステータスラインの色を直接変更すると、背景は変わりません。
実行する理由はありますか
:hi StatusLine guibg=red
、
たとえば、ステータスバーの背景はまだ緑がかったままですか?
ターミナルでvimを実行している場合、試してください:
hi StatusLine ctermbg=whatever ctermfg=whatever
guibg guifgはGUI用です。
それが役に立てば幸い。
私はこれをステータス行に使用します。これは、他のちょっとした中のどのモードに応じて行の色を変更します:
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
これは確かに素晴らしいコードです!!
ニーズに合わせて修正しました。バッファ状態にいくつかの文言を追加しました:
[保存]または[変更]。
バッファー変更イベントに基づいてステータスバーの色を設定します。変更なし/通常の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