Как я могу изменить цвет строки состояния vim? - PullRequest
35 голосов
/ 30 января 2012

Я пытаюсь изменить цвет строки состояния vim, отредактировав мой .vimrc.

Используя команду au, я пытался изменить цвет строки состояния при входе или выходе из режима вставки.;с помощью этой команды ничего не происходит:

hi StatusLine guibg=whatevercolourIwant

При прямом изменении цвета строки состояния без какой-либо команды au фон остается прежним.

Isесть причина, по которой, например, при выполнении

:hi StatusLine guibg=red,

фон строки состояния все еще остается зеленоватым?

Ответы [ 3 ]

42 голосов
/ 30 января 2012

если вы используете vim в терминале, попробуйте:

hi StatusLine ctermbg=whatever ctermfg=whatever

guibg guifg для GUI.

надеюсь, это поможет.

34 голосов
/ 03 февраля 2012

Я использую это для своей строки состояния, которая меняет цвет линии в зависимости от того, в каком режиме я нахожусь, среди других лакомых кусочков:

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
1 голос
/ 05 декабря 2017

Это действительно потрясающий код !!

Я изменил его в соответствии со своими потребностями. Я добавил несколько слов в состояние буфера:

[сохранено] или [изменено].

Я установил цвет строки состояния на основе события изменения буфера. DarkSlateGray для неизменных / нормальных. OrangeRed4, если были внесены какие-либо изменения.

Вот мой модифицированный код:

" Some funky status bar code its seems
" /6921143/kak-ya-mogu-izmenit-tsvet-stroki-sostoyaniya-vim
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...