Vim loses undo history when changing buffers
You can also add persistent undo, this will have vim store your undo even through restart:
" Persistent undo
set undofile
set undodir=$HOME/.vim/undo
set undolevels=1000
set undoreload=10000
Edit - via @sanbor:
Don't forget to do mkdir ~/.vim/undo
, otherwise vim won't do it for you.
You could :set hidden
. This means that the buffer of the old file will only be hidden when you switch to the new file. When you switch back, you still have your undo history.