2012-01-30 20 views
27

Estoy Tring para cambiar el color de línea de estado de Vim editando mi .vimrc.¿Cómo puedo cambiar el color de la línea de estado de vim?

Al usar el comando au, traté de cambiar el color de la línea de estado al ingresar o salir del modo insertar; mediante el uso de este comando no pasa nada:

hi StatusLine guibg=whatevercolourIwant

Al cambiar el color de la línea de estado directamente, sin ninguna orden au, el fondo sigue siendo el mismo.

¿Hay razón por la cual mediante la ejecución de

:hi StatusLine guibg=red,

por ejemplo, el fondo de la barra de estado sigue siendo verdoso?

Respuesta

35

si está ejecutando en el terminal vim, intente:

hi StatusLine ctermbg=whatever ctermfg=whatever 

guibg guifg son para el GUI.

Espero que ayude.

28

utilizo esto para mi línea de estado, que cambia el color de la línea en función de lo que el modo en que estoy, entre otras cositas:

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

Esto es sorprendente, gracias a que – tux91

+0

Así que para usar esta configuración en vim tiene que ser pegado en el archivo .vimrc? – Cristian

+0

sí, una información similar está en http://vim.wikia.com/wiki/Change_statusline_color_to_show_insert_or_normal_mode –

0

Ésta es de hecho un poco impresionante del código !!

lo he modificado para satisfacer mis necesidades. He añadido una redacción a mi estado amortiguador:

[salvados] o [modificado].

Configuré el color de mi barra de estado en función del evento de cambio del búfer. DarkSlateGray para sin cambios/normal. OrangeRed4 si se hicieron modificaciones.

Aquí está mi código modificado:

" 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 
Cuestiones relacionadas