如何更改vim状态线的颜色?
问题描述:
我正在编辑我的.vimrc
来改变vim的状态行颜色。如何更改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://*.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
这是惊人的,谢谢 – tux91 2013-01-16 03:20:35
所以要使用vim的这个配置它在.vimrc文件被粘贴? – Cristian 2016-04-12 18:01:00
是一个类似的信息在http://vim.wikia.com/wiki/Change_statusline_color_to_show_insert_or_normal_mode – 2017-01-22 18:26:06