Vim undo tree
Vim has an undo tree and there's two different ways to iterate with your changes.
One way to undo/redo changes is with: u
and <Ctrl>r
. This moves the current state based on the current branch in the tree.
The other way is using g-
and g+
. In this case it moves based on the timestamp of that change.
So here's an example to follow:
-
add a line:
added_line_1
-
update this line:
updated_line_1
-
undo this change:
u
-
add another line:
added_line_2
If you run through these steps your undo tree will be something like:
o [3] "added_line_2" <= "current_state"
| * [2] "updated_line_1"
|/
* [1] "added_line_1"
* [0] "empty_file"
Now, if you undo with u
will be in this state:
* [3] "added_line_2"
| * [2] "updated_line_1"
|/
o [1] "added_line_1" <= "current_state"
* [0] "empty_file"
Otherwise if you undo with g-
will be in this part of the tree:
* [3] "added_line_2"
| o [2] "updated_line_1" <= "current_state"
|/
* [1] "added_line_1"
* [0] "empty_file"
You can check gundo vim plugin for tree visualization.
Tweet