diff runtime/doc/usr_32.txt @ 799:6beb2c667935

updated for version 7.0b
author vimboss
date Fri, 24 Mar 2006 22:21:52 +0000
parents
children 9f345c48220b
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/doc/usr_32.txt
@@ -0,0 +1,151 @@
+*usr_32.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      The undo tree
+
+
+Vim provides multi-level undo.  If you undo a few changes and then make a new
+change you create a branch in the undo tree.  This text is about moving
+through the branches.
+
+|32.1|	Numbering changes
+|32.2|	Jumping around the tree
+|32.3|	Time travelling
+
+     Next chapter: |usr_40.txt|  Make new commands
+ Previous chapter: |usr_31.txt|  Exploiting the GUI
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*32.1*	Numbering changes
+
+In section |02.5| we only discussed one line of undo/redo.  But it is also
+possible to branch off.  This happens when you undo a few changes and then
+make a new change.  The new changes become a branch in the undo tree.
+
+Let's start with the text "one".  The first change to make is to append
+" too".  And then move to the first 'o' and change it into 'w'.  We then have
+two changes, numbered 1 and 2, and three states of the text:
+
+		one ~
+		 |
+	      change 1
+	         |
+	      one too ~
+	         |
+	      change 2
+	         |
+	      one two ~
+
+If we now undo one change, back to "one too", and change "one" to "me" we
+create a branch in the undo tree:
+
+		one ~
+		 |
+	      change 1
+	         |
+	      one too ~
+	      /     \
+         change 2  change 3
+            |         |
+         one two    me too ~
+
+You can now use the |u| command to undo.  If you do this twice you get to
+"one".  Use |CTRL-R| to redo, and you will go to "one too".  One more |CTRL-R|
+takes you to "me too".  Thus undo and redo go up and down in the tree, using
+the branch that was last used.
+
+What matters here is the order in which the changes are made.  Undo and redo
+are not considered changes in this context.  After each change you have a new
+state of the text.
+
+Note that only the changes are numbered, the text shown in the tree above has
+no identifier.  They are mostly referred to by the number of the change above
+it.  But sometimes by the number of one of the changes below it, especially
+when moving up in the tree, so that you know which change was just undone.
+
+==============================================================================
+*32.2*	Jumping around the tree
+
+So how do you get to "one two" now?  You can use this command: >
+
+	:undo 2
+
+The text is now "one two", you are below change 2.  You can use the |:undo|
+command to jump to below any change in the tree.
+
+Now make another change: change "one" to "not":
+
+		one ~
+		 |
+	      change 1
+	         |
+	      one too ~
+	      /     \
+         change 2  change 3
+            |         |
+         one two    me too ~
+	    |
+	 change 4
+	    |
+	 not two ~
+
+Now you change your mind and want to go back to "me too".  Use the |g-|
+command.  This moves back in time.  Thus it doesn't walk the tree upwards or
+downwards, but goes to the change made before.
+
+You can repeat |g-| and you will see the text change:
+	me too ~
+	one two ~
+	one too ~
+	one ~
+
+Use |g+| to move forward in time:
+	one ~
+	one too ~
+	one two ~
+	me too ~
+	not two ~
+
+Using |:undo| is useful if you know what change you want to jump to.  |g-| and
+|g+| are useful if you don't know exactly what the change number is.
+
+You can type a count before |g-| and |g+| to repeat them.
+
+==============================================================================
+*32.3*	Time travelling
+
+When you have been working on text for a while the tree grows to become big.
+Then you may want to go to the text of some minutes ago.
+
+To see what branches there are in the undo tree use this command: >
+
+	:undolist
+<	number changes  time ~
+	     3       2  16 seconds ago
+	     4       3  5 seconds ago
+
+Here you can see the number of the leaves in each branch and when the change
+was made.  Assuming we are below change 4, at "not two", you can go back ten
+seconds with this command: >
+
+	:earlier 10s
+
+Depending on how much time you took for the changes you end up at a certain
+position in the tree.  The |:earlier| command argument can be "m" for minutes
+and "h" for hours.  To go all the way back use a big number: >
+
+	:earlier 10h
+
+To travel forward in time again use the |:later| command: >
+
+	:later 1m
+
+The arguments are "s", "m" and "h", just like with |:earlier|.
+
+==============================================================================
+
+Next chapter: |usr_40.txt|  Make new commands
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl: