aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustine Smithies <justine@smithies.me.uk>2025-11-23 14:38:42 +0000
committerJustine Smithies <justine@smithies.me.uk>2025-11-23 14:38:42 +0000
commit882b097ab37af286bc3727476be8f3ff9cd96786 (patch)
treee4cc26303ac3ba178804f0bab7062cd61c60bb10
parent6d3f719e71ad8e5880ae0ae86e9bc425ac1356aa (diff)
WIP Adding custom statusline
-rw-r--r--.vimrc72
1 files changed, 63 insertions, 9 deletions
diff --git a/.vimrc b/.vimrc
index f990674..2ad4b87 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1,3 +1,15 @@
+" Plugins
+call plug#begin()
+
+" Plugins listed below
+Plug 'morhetz/gruvbox'
+Plug 'lilydjwg/colorizer'
+
+call plug#end()
+
+" Call after plugin is loaded
+autocmd vimenter * ++nested colorscheme gruvbox
+
set nocompatible " This fixes the problem where arrow keys do not function properly on some systems.
let mapleader=' ' " Use space for leader key
@@ -6,7 +18,7 @@ set number
set ruler
set noerrorbells
set laststatus=2
-set showmode
+set noshowmode " Don't show mode in bottom status line
let &fillchars ..= ',eob: ' " Hide tildes at EOF
set splitbelow splitright
set cursorline " Highlight the active cursor line
@@ -74,14 +86,56 @@ let g:netrw_browse_split = 3
let g:netrw_altv = 1
let g:netrw_winsize = 25
-" Plugins
-call plug#begin()
+" Setup custom statusline
+function! GitBranch()
+ return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
+endfunction
-" Plugins listed below
-Plug 'morhetz/gruvbox'
-Plug 'lilydjwg/colorizer'
+function! StatuslineGit()
+ let l:branchname = GitBranch()
+ return strlen(l:branchname) > 0?' '.l:branchname.' ':''
+endfunction
-call plug#end()
+function! StatuslineMode()
+ let l:mode=mode()
+ if l:mode==#"n"
+ return "Normal"
+ elseif l:mode==#"v"
+ return "Visual"
+ elseif l:mode==#"V"
+ return "Visual line"
+ elseif l:mode==#"\<C-V>"
+ return "Visual block"
+ elseif l:mode==#"i"
+ return "Insert"
+ elseif l:mode==#"R"
+ return "Replace"
+ elseif l:mode==#"s"
+ return "Select"
+ elseif l:mode==#"t"
+ return "Terminal"
+ elseif l:mode==#"c"
+ return "Enter command"
+ elseif l:mode==#"!"
+ return "Shell"
+ endif
+endfunction
+
+set statusline=
+set statusline+=%#PmenuSel#
+set statusline+=%#DiffAdd#
+set statusline+=%{StatuslineMode()}
+set statusline+=%{StatuslineGit()}
+set statusline+=\ %F
+set statusline+=\ %r
+set statusline+=%m
+set statusline+=%#CursorColumn#
+set statusline+=%=
+set statusline+=\ %y\
+set statusline+=%#DiffAdd#
+set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
+set statusline+=\[%{&fileformat}\]
+set statusline+=\ %p%%
+set statusline+=\ %l:%c
+set statusline+=\
-" Call after plugin is loaded
-autocmd vimenter * ++nested colorscheme gruvbox