How can I keep undo history after saving on Visual Studio Code

51.7k Views Asked by At

I'm using latest version of VS code (1.9.0).

After I undo (ctrl+z) something, and save the file (ctrl+s), then I cannot redo anymore (ctrl+y).

I would like to go back and forth during the editor is running same as Sublime or other editor. Can anyone solve this problem? Thank you.

7

There are 7 best solutions below

0
On

In my case it was the Format On Save in settings that caused the undo/redo buffer to be flushed when saving files in VSC.

To get around this you can set Format On Save Mode to

modifications (requires source control like git)

or

modificationsIfAvailable (this also requires source control to help with this issue else VSC will format the entire file and flush the undo/redo buffer)

Voila!!! I had both Format On Save enabled and a redo buffer that was working after saving the file. Truly wonderful!

If this doesn´t help make sure to try to disable all extensions to see if one of them might be causing the buffer flushing.

enter image description here

1
On

At the bottom left corner of the vscode you have a "timeline", you can undo, and see all saved logs.

2
On

Undo/redo on

1
On
3
On

For people getting to this question that want to disable the persistence of the undo stack after a file is closed, this too appears to be coming to v1.45.

See https://github.com/microsoft/vscode/issues/94778 and https://github.com/microsoft/vscode/pull/96317 and v1.45 Release Notes:

"files.restoreUndoStack": false

Set to false to disable undo stack items after a file is closed. the default is true.

1
On

The problem is confirmed in microsoft/vscode issue 10932 "Undo stack lost" (and linked to the aforementioned issue 7169, as part of the undo/redo issues)

We loose the undo stack very easily when leaving a dirty file in a tab (not visible) and then saving the dirty file:

  • open some tabs and make them dirty
  • wait for a few seconds
  • press "Save All"
  • go to those tabs that where not visible and try to undo
    => you cannot undo

For an opened file, it was solved in VSCode 1.5.0 (Sept. 2016) with commit b872e3d

But for a reopened file, VSCode 1.44 (March 2020) does address the issue, which is listed in the Iteration Plan for March 2020, and assigned to Alexandru Dima: see release notes

Keep Undo stack when reopening files

VS Code will now keep the Undo/Redo stack of a file when the file is closed. When the file is reopened, if its contents hasn't changed since it was closed, the Undo/Redo stack will be restored.

This is very useful if you limit the number of open editors with the workbench.editor.limit.value setting or you accidentally close a file you are working on.

3
On

Hope this will work.

shift + command + z 

It will redo what you expected in Sublime Text (command + y )