Vim persistent buffer list combined with saved sessions
January 08, 2015 [Tech, vim]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 set sessionoptions=blank,buffers,curdir,tabpages,resize,winpos,winsize 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 function! OpenBuffergatorIfItsBufferExists() if bufnr("[[buffergator-buffers]]") > '' BuffergatorOpen normal o endif endfunction 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.