Ответ 1
Если вы используете vim в терминале, попробуйте:
hi StatusLine ctermbg=whatever ctermfg=whatever
guibg guifg для GUI.
надеюсь, что это поможет.
Я только начал использовать vim, и я немного переделываю .vimrc.
После обнаружения команды 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/info/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