web-dev-qa-db-fra.com

Comment puis-je changer la couleur de la ligne d'état vim?

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?

36
gcali

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.

43
Kent

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
33
jhogendorn

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
1
Vissie