annotate runtime/doc/undo.txt @ 83:d9030055c432 v7.0033

updated for version 7.0033
author vimboss
date Fri, 07 Jan 2005 21:51:51 +0000
parents 3fc0f57ecb91
children f08390485cd3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 *undo.txt* For Vim version 7.0aa. Last change: 2003 Oct 21
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 VIM REFERENCE MANUAL by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 Undo and redo *undo-redo*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 The basics are explained in section |02.5| of the user manual.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 1. Undo and redo commands |undo-commands|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 2. Two ways of undo |undo-two-ways|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 3. Remarks about undo |undo-remarks|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 1. Undo and redo commands *undo-commands*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 <Undo> or *undo* *<Undo>* *u*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 u Undo [count] changes. {Vi: only one level}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 *:u* *:un* *:undo*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 :u[ndo] Undo one change. {Vi: only one level}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 *CTRL-R*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 CTRL-R Redo [count] changes which were undone. {Vi: redraw
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 screen}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 *:red* *:redo* *redo*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 :red[o] Redo one change which was undone. {Vi: no redo}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 *U*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 U Undo all latest changes on one line. {Vi: while not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 moved off of it}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 The last changes are remembered. You can use the undo and redo commands above
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 to revert the text to how it was before each change. You can also apply the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 changes again, getting back the text before the undo.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 The "U" command is treated by undo/redo just like any other command. Thus a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 "u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 restore the situation of a line to before the previous "U" command. This may
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 be confusing. Try it out to get used to it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 The "U" command will always mark the buffer as changed. When "U" changes the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 buffer back to how it was without changes, it is still considered changed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 Use "u" to undo changes until the buffer becomes unchanged.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 2. Two ways of undo *undo-two-ways*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 How undo and redo commands work depends on the 'u' flag in 'cpoptions'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 There is the Vim way ('u' excluded) and the vi-compatible way ('u' included).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 nothing (undoes an undo).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 'u' excluded, the Vim way:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 You can go back in time with the undo command. You can then go forward again
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 with the redo command. If you make a new change after the undo command,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 the redo will not be possible anymore.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 'u' included, the Vi-compatible way:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 The undo command undoes the previous change, and also the previous undo command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 The redo command repeats the previous undo command. It does NOT repeat a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 change command, use "." for that.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 Examples Vim way Vi-compatible way ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 "uu" two times undo no-op
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 "u CTRL-R" no-op two times undo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 is not Vi compatible. For example "dwdwu." in Vi deletes two
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 words, in Nvi it does nothing.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 3. Remarks about undo *undo-remarks*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 The number of changes that are remembered is set with the 'undolevels' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 If it is zero, the Vi-compatible way is always used. If it is negative no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 undo is possible. Use this if you are running out of memory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 Marks for the buffer ('a to 'z) are also saved and restored, together with the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 text. {Vi does this a little bit different}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 When all changes have been undone, the buffer is not considered to be changed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 that this is relative to the last write of the file. Typing "u" after ":w"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 actually changes the buffer, compared to what was written, so the buffer is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 considered changed then.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 When manual |folding| is being used, the folds are not saved and restored.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 Only changes completely within a fold will keep the fold as it was, because
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 the first and last line of the fold don't change.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 The numbered registers can also be used for undoing deletes. Each time you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 delete text, it is put into register "1. The contents of register "1 are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 shifted to "2, etc. The contents of register "9 are lost. You can now get
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 back the most recent deleted text with the put command: '"1P'. (also, if the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 deleted text was the result of the last delete or copy operation, 'P' or 'p'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 also works as this puts the contents of the unnamed register). You can get
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 back the text of three deletes ago with '"3P'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 *redo-register*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 If you want to get back more than one part of deleted text, you can use a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 special feature of the repeat command ".". It will increase the number of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 register used. So if you first do ""1P", the following "." will result in a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 '"2P'. Repeating this will result in all numbered registers being inserted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 Example: If you deleted text with 'dd....' it can be restored with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 '"1P....'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 If you don't know in which register the deleted text is, you can use the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 :display command. An alternative is to try the first register with '"1P', and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 if it is not what you want do 'u.'. This will remove the contents of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 first put, and repeat the put command for the second register. Repeat the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 'u.' until you got what you want.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 vim:tw=78:ts=8:ft=help:norl: