Using Vim's persistent undo?
Solution 1:
Put this in your .vimrc
to create an undodir
if it doesn't exist and enable persistent undo. Tested on both Windows and Linux.
" Put plugins and dictionaries in this dir (also on Windows)
let vimDir = '$HOME/.vim'
if stridx(&runtimepath, expand(vimDir)) == -1
" vimDir is not on runtimepath, add it
let &runtimepath.=','.vimDir
endif
" Keep undo history across sessions by storing it in a file
if has('persistent_undo')
let myUndoDir = expand(vimDir . '/undodir')
" Create dirs
call system('mkdir ' . vimDir)
call system('mkdir ' . myUndoDir)
let &undodir = myUndoDir
set undofile
endif
Solution 2:
I tried this in my _gvimrc:
" Persistent undo
try
set undodir=C:\vim\undodir
set undofile
catch
endtry
It started working as advertised when I deleted the try-catch bracket, thus:
" Persistent undo
set undodir=C:\vim\undodir
set undofile
I had to create the directory.