Je suis sur le point de changer la couleur de la ligne d'état de vim en modifiant mon .vimrc
.
En utilisant la commande au
, j'ai essayé de changer la couleur de la ligne d'état en entrant ou en quittant le mode d'insertion; en utilisant cette commande, rien ne se passe:
hi StatusLine guibg=whatevercolourIwant
En modifiant directement la couleur de la ligne d'état, sans aucune commande au
, l'arrière-plan reste le même.
Y a-t-il une raison pour laquelle en exécutant
:hi StatusLine guibg=red
,
par exemple, l'arrière-plan de la barre d'état reste toujours verdâtre?
si vous exécutez vim dans le terminal, essayez:
hi StatusLine ctermbg=whatever ctermfg=whatever
guibg guifg sont pour GUI.
j'espère que cela aide.
J'utilise ceci pour ma ligne d'état, qui change la couleur de la ligne en fonction du mode dans lequel je suis, entre autres bribes:
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
C'est en effet un peu génial de code !!
Je l'ai adapté à mes besoins. J'ai ajouté quelques mots à mon état tampon:
[enregistré] ou [modifié].
J'ai défini ma couleur de barre d'état en fonction de l'événement de changement de tampon. DarkSlateGray pour inchangé/normal. OrangeRed4 en cas de modifications.
Voici mon code modifié:
" 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