VIM: Significant style changes to statusline
I have used colour and powerline symbols to differentiate different parts of my status line. Inspiration came from this: https://www.reddit.com/r/vimporn/comments/kbtu74/my_theme_called_humanoid_and_my_statusbar/
This commit is contained in:
parent
909a6e5e3c
commit
f1c2c3fcb2
1 changed files with 104 additions and 33 deletions
|
@ -1,36 +1,107 @@
|
||||||
" Always show a statusline
|
" Always show a statusline
|
||||||
set laststatus=2
|
set laststatus=2
|
||||||
|
|
||||||
" Make it empty so we can add to it
|
" Get current filetype
|
||||||
set statusline=
|
function! CheckFT(filetype)
|
||||||
" Space character
|
if a:filetype == ''
|
||||||
set statusline+=\
|
return '-'
|
||||||
" Short file name
|
else
|
||||||
set statusline+=%f
|
return tolower(a:filetype)
|
||||||
" Space character
|
endif
|
||||||
set statusline+=\
|
endfunction
|
||||||
" Read only flag
|
|
||||||
set statusline+=%r
|
" set colors for statusline based on mode
|
||||||
" Space character
|
function! DetectMode(mode)
|
||||||
set statusline+=\
|
if empty($DISPLAY)
|
||||||
" Modified flag
|
let left=""
|
||||||
set statusline+=%m
|
let right=""
|
||||||
" Seperator
|
else
|
||||||
set statusline+=%=
|
let left=""
|
||||||
" Git branch
|
let right=""
|
||||||
set statusline+=%{FugitiveStatusline()}
|
end
|
||||||
" Space character
|
|
||||||
set statusline+=\
|
let statusline=""
|
||||||
" column number
|
" Mode
|
||||||
set statusline+=%c
|
if a:mode == 'n'
|
||||||
set statusline+=:
|
let statusline .= "%#GruvboxBg4#\ " . left
|
||||||
" Line number
|
let statusline .= "%#PmenuThumb#NORMAL"
|
||||||
set statusline+=%l
|
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||||||
" Literal `/`
|
elseif a:mode == 'i'
|
||||||
set statusline+=/
|
let statusline .= "%#GruvboxBlue#\ " . left
|
||||||
" Total number of lines
|
let statusline .= "%#PmenuSel#INSERT"
|
||||||
set statusline+=%L
|
let statusline .= "%#GruvboxBlue#" . right . "\ "
|
||||||
" Space character
|
elseif a:mode == 'R'
|
||||||
set statusline+=\
|
let statusline .= "%#GruvboxRed#\ " . left
|
||||||
" File type
|
let statusline .= "%#DiffDelete#REPLACE"
|
||||||
set statusline+=%y
|
let statusline .= "%#GruvboxRed#" . right . "\ "
|
||||||
|
elseif a:mode ==# 'v'
|
||||||
|
let statusline .= "%#GruvboxAqua#\ " . left
|
||||||
|
let statusline .= "%#DiffChange#VISUAL"
|
||||||
|
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||||||
|
elseif a:mode ==# 'V'
|
||||||
|
let statusline .= "%#GruvboxAqua#\ " . left
|
||||||
|
let statusline .= "%#DiffChange#VISUAL"
|
||||||
|
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||||||
|
elseif a:mode ==# ''
|
||||||
|
let statusline .= "%#GruvboxAqua#\ " . left
|
||||||
|
let statusline .= "%#DiffChange#VISUAL"
|
||||||
|
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||||||
|
elseif a:mode ==# 'c'
|
||||||
|
let statusline .= "%#GruvboxBg2#\ " . left
|
||||||
|
let statusline .= "%#Pmenu#COMMAND"
|
||||||
|
let statusline .= "%#GruvboxBg2#" . right . "\ "
|
||||||
|
elseif a:mode ==# 't'
|
||||||
|
let statusline .= "%#ModeTFGCS#\ " . left
|
||||||
|
let statusline .= "%#ModeTFGC#\ TERMINAL\ "
|
||||||
|
let statusline .= "%#ModeTFGCS#" . right . "\ " . left
|
||||||
|
let statusline .= "%#ModeTFGC#%[%n\ ̷%{bufnr('$')}\ "
|
||||||
|
elseif a:mode == 's' || a:mode == 'S' || a:mode == '^S'
|
||||||
|
let statusline .= "%#GruvboxAqua#\ " . left
|
||||||
|
let statusline .= "%#DiffChange#VISUAL"
|
||||||
|
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||||||
|
endif
|
||||||
|
" Filename
|
||||||
|
" grey = normal
|
||||||
|
" aqua = modified
|
||||||
|
" red = read only and not modified
|
||||||
|
if &mod == 1
|
||||||
|
let statusline .= "%#GruvboxAqua#\ " . left
|
||||||
|
let statusline .= "%#DiffChange#%.20f"
|
||||||
|
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||||||
|
else
|
||||||
|
if &readonly == 1
|
||||||
|
let statusline .= "%#GruvboxRed#\ " . left
|
||||||
|
let statusline .= "%#DiffDelete#%.20f"
|
||||||
|
let statusline .= "%#GruvboxRed#" . right . "\ "
|
||||||
|
else
|
||||||
|
let statusline .= "%#GruvboxBg4#\ " . left
|
||||||
|
let statusline .= "%#PmenuThumb#%.20f"
|
||||||
|
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Seperator
|
||||||
|
let statusline .= "%="
|
||||||
|
|
||||||
|
" git branch
|
||||||
|
if exists("*FugitiveHead")
|
||||||
|
let statusline .= "%#GruvboxBg4#\ " . left
|
||||||
|
let statusline .= "%#PmenuThumb#%{FugitiveHead()}"
|
||||||
|
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Filetype
|
||||||
|
let statusline .= "%#GruvboxBlue#\ " . left
|
||||||
|
let statusline .= "%#PmenuSel#%{CheckFT(&filetype)}"
|
||||||
|
let statusline .= "%#GruvboxBlue#" . right . "\ "
|
||||||
|
|
||||||
|
" Cursor location and file length
|
||||||
|
let statusline .= "%#GruvboxYellow#\ " . left
|
||||||
|
let statusline .= "%#Search#%c:%l\ %#IncSearch#\ %L"
|
||||||
|
let statusline .= "%#GruvboxOrange#" . right . "\ "
|
||||||
|
|
||||||
|
|
||||||
|
return statusline
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
set statusline=%!DetectMode(mode())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue