I was becoming increasingly uncomfortable with how crufty my neovim config was getting, and especially how I didn’t understand parts of it, so I decided to wipe it clean and rebuild it from scratch.
I did it live on stream, to make it feel like a worthwhile activity:
Headline features of the new vimrc:
- A new theme, using the base16 theme framework
- A file browser (NERDTree)
- A minimalist status line with vim-airline
- Search with ripgrep
- Rust language support with Coc
Note: after the stream I managed to resolve the remaining issues with highlight colours not showing by triggering re-applying them after the theme has been applied:
autocmd ColorScheme * highlight MatchParen cterm=none ctermbg=none ctermfg=green
You can find my current neovim config at gitlab.com/andybalaam/configs/-/tree/main/.config/nvim.
I got sick of not having Vim as my text editor for emails in Claws Mail but GVim makes my eyes bleed so I wanted proper Vim-in-a-terminal as my editor, which was not particularly straightforward.
The proper incantation was to make a script in my PATH called terminal-vim like this:
mate-terminal --disable-factory -x vim -f "$@"
(gnome-terminal should work similarly if you’re in GNOME.)
and to set it as my external editor in Claws Mail by going to Configuration, Preferences, External Programs, and setting Text Editor to terminal-vim '%s'.
Then under Writing in Preferences, I ticked the box “Automatically launch the external editor” and all is well.
I like to use several saved Vim sessions to remember what files I was working on in a particular project.
I also like to have a list of buffers I have open on the left-hand side of the screen that is always visible and up-to-date.
Sometimes, the existence of a generated buffer like the list of buffers can confuse the session restore code, but I have found a way to make this work nicely using the Buffergator plugin and the built-in mksession command.
Here are the relevant snippets from my .vimrc.
I am a beginner: please comment if you see bugs or possible improvements.
" Prerequisites: install the Buffergator plugin
" Save session on exit, excluding problematic stuff like options
au VimLeavePre * if v:this_session != '' | exec "mks! " . v:this_session | endif
" Open Buffergator when you press F5
nnoremap <F5> :BuffergatorOpen<CR>
" Various Buffergator options to make it persistent,
" and displayed how I like
let g:buffergator_autodismiss_on_select = 0
let g:buffergator_display_regime = "bufname"
let g:buffergator_sort_regime = "filepath"
let g:buffergator_autoupdate = 1
" Suppress the error message about the Buffergator buffer
" when you restore a session
if bufnr("[[buffergator-buffers]]") > ''
autocmd VimEnter * call OpenBuffergatorIfItsBufferExists()
Now when I start vim with vim -S path/to/session.vim the session is restored and saved when I exit, with a persistent buffer list on the left, and no errors during the session restore.
I have recently got quite excited about Vim (the text editor), so here is a video showing you the basics. I use it because I enjoy learning it.
Slides: Vim for Fun.