mirror of
https://github.com/elenapan/dotfiles.git
synced 2025-12-27 15:54:57 +08:00
Former-commit-id: 4b852e971c
Former-commit-id: 29087b0bedd14b1d66588d413580986cab275c3b
Former-commit-id: fee7d8452fb6da8b85d5e0e4a374c21e2377fea2
Former-commit-id: 204e2ce1a867ca40c261bc97c4c1aecdd9c65d2d
123 lines
4.3 KiB
VimL
123 lines
4.3 KiB
VimL
" ====================================================================
|
|
" Make sure to:
|
|
" 1. source this file somewhere at the bottom of your config.
|
|
" 2. disable any statusline plugins, as they will override this.
|
|
" ====================================================================
|
|
|
|
" Do not show mode under the statusline since the statusline itself changes
|
|
" color depending on mode
|
|
set noshowmode
|
|
|
|
set laststatus=2
|
|
" ~~~~ Statusline configuration ~~~~
|
|
" ':help statusline' is your friend!
|
|
function! RedrawModeColors(mode) " {{{
|
|
" Normal mode
|
|
if a:mode == 'n'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=4 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=4
|
|
" Insert mode
|
|
elseif a:mode == 'i'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=1 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=1
|
|
" Replace mode
|
|
elseif a:mode == 'R'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=3 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=3
|
|
" Visual mode
|
|
elseif a:mode == 'v' || a:mode == 'V' || a:mode == '^V'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=5 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=5
|
|
" Command mode
|
|
elseif a:mode == 'c'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=6 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=6
|
|
" Terminal mode
|
|
elseif a:mode == 't'
|
|
hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineFilename ctermfg=1 cterm=none ctermbg=0
|
|
hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=1
|
|
endif
|
|
" Return empty string so as not to display anything in the statusline
|
|
return ''
|
|
endfunction
|
|
" }}}
|
|
function! SetModifiedSymbol(modified) " {{{
|
|
if a:modified == 1
|
|
hi MyStatuslineModifiedBody ctermbg=0 cterm=bold ctermfg=1
|
|
else
|
|
hi MyStatuslineModifiedBody ctermbg=0 cterm=bold ctermfg=8
|
|
endif
|
|
return '●'
|
|
endfunction
|
|
" }}}
|
|
function! SetFiletype(filetype) " {{{
|
|
if a:filetype == ''
|
|
return '-'
|
|
else
|
|
return a:filetype
|
|
endif
|
|
endfunction
|
|
" }}}
|
|
|
|
" Statusbar items
|
|
" ====================================================================
|
|
|
|
" This will not be displayed, but the function RedrawModeColors will be
|
|
" called every time the mode changes, thus updating the colors used for the
|
|
" components.
|
|
set statusline=%{RedrawModeColors(mode())}
|
|
" Left side items
|
|
" =======================
|
|
set statusline+=%#MyStatuslineAccent#
|
|
set statusline+=%#MyStatuslineAccentBody#\
|
|
" Filename
|
|
set statusline+=%#MyStatuslineFilename#\ %.20f
|
|
set statusline+=%#MyStatuslineSeparator#\
|
|
" Modified status
|
|
set statusline+=%#MyStatuslineModified#
|
|
set statusline+=%#MyStatuslineModifiedBody#%{SetModifiedSymbol(&modified)}
|
|
set statusline+=%#MyStatuslineModified#
|
|
" Right side items
|
|
" =======================
|
|
set statusline+=%=
|
|
" Line and Column
|
|
set statusline+=%#MyStatuslineLineCol#
|
|
set statusline+=%#MyStatuslineLineColBody#%2l
|
|
set statusline+=\/%#MyStatuslineLineColBody#%2c
|
|
set statusline+=%#MyStatuslineLineCol#
|
|
" Padding
|
|
set statusline+=\
|
|
" Current scroll percentage and total lines of the file
|
|
set statusline+=%#MyStatuslinePercentage#
|
|
set statusline+=%#MyStatuslinePercentageBody#%P
|
|
set statusline+=\/\%#MyStatuslinePercentageBody#%L
|
|
set statusline+=%#MyStatuslinePercentage#
|
|
" Padding
|
|
set statusline+=\
|
|
" Filetype
|
|
set statusline+=%#MyStatuslineFiletype#
|
|
set statusline+=%#MyStatuslineFiletypeBody#%{SetFiletype(&filetype)}
|
|
set statusline+=%#MyStatuslineFiletype#
|
|
|
|
" Setup the colors
|
|
hi StatusLine ctermfg=5 ctermbg=NONE cterm=NONE
|
|
hi StatusLineNC ctermfg=8 ctermbg=NONE cterm=bold
|
|
|
|
hi MyStatuslineSeparator ctermfg=0 cterm=NONE ctermbg=NONE
|
|
|
|
hi MyStatuslineModified ctermfg=0 cterm=NONE ctermbg=NONE
|
|
|
|
hi MyStatuslineFiletype ctermbg=NONE cterm=NONE ctermfg=0
|
|
hi MyStatuslineFiletypeBody ctermfg=5 cterm=italic ctermbg=0
|
|
|
|
hi MyStatuslinePercentage ctermfg=0 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslinePercentageBody ctermbg=0 cterm=none ctermfg=6
|
|
|
|
hi MyStatuslineLineCol ctermfg=0 cterm=NONE ctermbg=NONE
|
|
hi MyStatuslineLineColBody ctermbg=0 cterm=none ctermfg=2
|