It's extremely useful to - Have a virtually unlimited undo history, and - Have it persisted even after exiting VIM, and - Better, even have it synchronized across all your working machines using Dropbox.
Here is the .vimrc
snippet I used to do the trick.
" Persist undo
set undofile
"maximum number of changes that can be undone
set undolevels=9999
"maximum number lines to save for undo on a buffer reload
set undoreload=9999
" If have Dropbox installed, create a undo dir in it
if isdirectory(expand("$HOME/Dropbox/"))
silent !mkdir -p $HOME/Dropbox/.vimundo >/dev/null 2>&1
set undodir=$HOME/Dropbox/.vimundo//
else
" Otherwise, keep them in home
silent !mkdir -p $HOME/.vimundo >/dev/null 2>&1
set undodir=$HOME/.vimundo//
end
Note the double slash after the undodir
, it tells VIM to name the undo file
using the full path of the editing file, so no naming collision will occur.