Vim features a :mksession
command to write a file containing the current
state of Vim: window positions, open folds, stuff like that. For most of my
existence, I found the interface way too awkward and manual to be useful, but
I've recently discovered that the only thing standing between me and simple,
no-hassle Vim sessions is a few tweaks:
- Instead of making me remember to capture the session immediately before
exiting Vim, allow me to do it at any time, and automatically re-invoke
:mksession
immediately before exit. - Also invoke
:mksession
whenever the layout changes (in particular, onBufEnter
), so that even if Vim exits abnormally, I'm good to go. - If I load an existing session, automatically keep it updated as above.
- If I try to create a new session on top of an existing session, don't refuse to overwrite it. Just do what I mean.
- If I pass in a directory rather than a file name, just create a
Session.vim
inside of it. - Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.
Use :Obsess
(with optional file/directory name) to start recording to a
session file and :Obsess!
to stop and throw it away. That's it. Load a
session in the usual manner: vim -S
, or :source
it.
There's also an indicator you can put in 'statusline'
, 'tabline'
, or
'titlestring'
. See :help obsession-status
.
If you don't have a preferred installation method, I recommend installing pathogen.vim, and then simply copy and paste:
cd ~/.vim/bundle
git clone git://github.com/tpope/vim-obsession.git
vim -u NONE -c "helptags vim-obsession/doc" -c q
Like obsession.vim? Follow the repository on GitHub and vote for it on vim.org. And if you're feeling especially charitable, follow tpope on Twitter and GitHub.
Copyright ยฉ Tim Pope. Distributed under the same terms as Vim itself.
See :help license
.