Vim loses undo history when changing buffers

If I'm working in a file, change to another buffer, and then change back, I have lost my undo history.

  1. vim File1.txt - make a bunch of changes & save.
  2. Open new buffer - :e test.txt
  3. Switch back to File1.txt - :b#
  4. Undo history is gone.

Any workarounds for this?


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.


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.