2102.2.2973
by Bram Moolenaar
Vim 7.4a BETA release. |
1 |
*undo.txt* For Vim version 7.4a. Last change: 2012 Mar 04 |
7
by vimboss
updated for version 7.0001 |
2 |
|
3 |
||
4 |
VIM REFERENCE MANUAL by Bram Moolenaar |
|
5 |
||
6 |
||
7 |
Undo and redo *undo-redo* |
|
8 |
||
9 |
The basics are explained in section |02.5| of the user manual. |
|
10 |
||
11 |
1. Undo and redo commands |undo-commands| |
|
12 |
2. Two ways of undo |undo-two-ways| |
|
697
by vimboss
updated for version 7.0210 |
13 |
3. Undo blocks |undo-blocks| |
758
by vimboss
updated for version 7.0224 |
14 |
4. Undo branches |undo-branches| |
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
15 |
5. Undo persistence |undo-persistence| |
16 |
6. Remarks about undo |undo-remarks| |
|
7
by vimboss
updated for version 7.0001 |
17 |
|
18 |
============================================================================== |
|
19 |
1. Undo and redo commands *undo-commands* |
|
20 |
||
21 |
<Undo> or *undo* *<Undo>* *u* |
|
22 |
u Undo [count] changes. {Vi: only one level} |
|
23 |
||
24 |
*:u* *:un* *:undo* |
|
25 |
:u[ndo] Undo one change. {Vi: only one level} |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
26 |
*E830* |
772
by vimboss
updated for version 7.0226 |
27 |
:u[ndo] {N} Jump to after change number {N}. See |undo-branches| |
28 |
for the meaning of {N}. {not in Vi} |
|
29 |
||
7
by vimboss
updated for version 7.0001 |
30 |
*CTRL-R* |
31 |
CTRL-R Redo [count] changes which were undone. {Vi: redraw |
|
32 |
screen} |
|
33 |
||
34 |
*:red* *:redo* *redo* |
|
35 |
:red[o] Redo one change which was undone. {Vi: no redo} |
|
36 |
||
37 |
*U* |
|
2102.2.909
by Bram Moolenaar
Updated runtime files. |
38 |
U Undo all latest changes on one line, the line where |
39 |
the latest change was made. |U| itself also counts as |
|
40 |
a change, and thus |U| undoes a previous |U|. |
|
41 |
{Vi: while not moved off of the last modified line} |
|
7
by vimboss
updated for version 7.0001 |
42 |
|
43 |
The last changes are remembered. You can use the undo and redo commands above |
|
44 |
to revert the text to how it was before each change. You can also apply the |
|
45 |
changes again, getting back the text before the undo. |
|
46 |
||
47 |
The "U" command is treated by undo/redo just like any other command. Thus a |
|
48 |
"u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When |
|
49 |
mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will |
|
50 |
restore the situation of a line to before the previous "U" command. This may |
|
51 |
be confusing. Try it out to get used to it. |
|
52 |
The "U" command will always mark the buffer as changed. When "U" changes the |
|
53 |
buffer back to how it was without changes, it is still considered changed. |
|
54 |
Use "u" to undo changes until the buffer becomes unchanged. |
|
55 |
||
56 |
============================================================================== |
|
57 |
2. Two ways of undo *undo-two-ways* |
|
58 |
||
59 |
How undo and redo commands work depends on the 'u' flag in 'cpoptions'. |
|
60 |
There is the Vim way ('u' excluded) and the vi-compatible way ('u' included). |
|
61 |
In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does |
|
62 |
nothing (undoes an undo). |
|
63 |
||
64 |
'u' excluded, the Vim way: |
|
65 |
You can go back in time with the undo command. You can then go forward again |
|
66 |
with the redo command. If you make a new change after the undo command, |
|
67 |
the redo will not be possible anymore. |
|
68 |
||
69 |
'u' included, the Vi-compatible way: |
|
70 |
The undo command undoes the previous change, and also the previous undo command. |
|
71 |
The redo command repeats the previous undo command. It does NOT repeat a |
|
72 |
change command, use "." for that. |
|
73 |
||
74 |
Examples Vim way Vi-compatible way ~ |
|
75 |
"uu" two times undo no-op |
|
76 |
"u CTRL-R" no-op two times undo |
|
77 |
||
78 |
Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this |
|
79 |
is not Vi compatible. For example "dwdwu." in Vi deletes two |
|
80 |
words, in Nvi it does nothing. |
|
81 |
||
82 |
============================================================================== |
|
697
by vimboss
updated for version 7.0210 |
83 |
3. Undo blocks *undo-blocks* |
84 |
||
85 |
One undo command normally undoes a typed command, no matter how many changes |
|
86 |
that command makes. This sequence of undo-able changes forms an undo block. |
|
87 |
Thus if the typed key(s) call a function, all the commands in the function are |
|
88 |
undone together. |
|
89 |
||
90 |
If you want to write a function or script that doesn't create a new undoable |
|
91 |
change but joins in with the previous change use this command: |
|
92 |
||
839
by vimboss
updated for version 7.0e05 |
93 |
*:undoj* *:undojoin* *E790* |
697
by vimboss
updated for version 7.0210 |
94 |
:undoj[oin] Join further changes with the previous undo block. |
95 |
Warning: Use with care, it may prevent the user from |
|
839
by vimboss
updated for version 7.0e05 |
96 |
properly undoing changes. Don't use this after undo |
97 |
or redo. |
|
697
by vimboss
updated for version 7.0210 |
98 |
{not in Vi} |
99 |
||
100 |
This is most useful when you need to prompt the user halfway a change. For |
|
101 |
example in a function that calls |getchar()|. Do make sure that there was a |
|
102 |
related change before this that you must join with. |
|
103 |
||
104 |
This doesn't work by itself, because the next key press will start a new |
|
105 |
change again. But you can do something like this: > |
|
106 |
||
107 |
:undojoin | delete |
|
108 |
||
109 |
After this an "u" command will undo the delete command and the previous |
|
110 |
change. |
|
111 |
||
2033
by Bram Moolenaar
Update documentation files. |
112 |
To do the opposite, break a change into two undo blocks, in Insert mode use |
113 |
CTRL-G u. This is useful if you want an insert command to be undoable in |
|
114 |
parts. E.g., for each sentence. |i_CTRL-G_u| |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
115 |
Setting the value of 'undolevels' also breaks undo. Even when the new value |
116 |
is equal to the old value. |
|
2033
by Bram Moolenaar
Update documentation files. |
117 |
|
697
by vimboss
updated for version 7.0210 |
118 |
============================================================================== |
827
by vimboss
updated for version 7.0d02 |
119 |
4. Undo branches *undo-branches* *undo-tree* |
758
by vimboss
updated for version 7.0224 |
120 |
|
793
by vimboss
updated for version 7.0231 |
121 |
Above we only discussed one line of undo/redo. But it is also possible to |
122 |
branch off. This happens when you undo a few changes and then make a new |
|
123 |
change. The undone changes become a branch. You can go to that branch with |
|
124 |
the following commands. |
|
758
by vimboss
updated for version 7.0224 |
125 |
|
799
by vimboss
updated for version 7.0b |
126 |
This is explained in the user manual: |usr_32.txt|. |
758
by vimboss
updated for version 7.0224 |
127 |
|
772
by vimboss
updated for version 7.0226 |
128 |
*:undol* *:undolist* |
129 |
:undol[ist] List the leafs in the tree of changes. Example: |
|
2102.2.508
by Bram Moolenaar
Updated runtime files. |
130 |
number changes when saved ~ |
131 |
88 88 2010/01/04 14:25:53 |
|
132 |
108 107 08/07 12:47:51 |
|
133 |
136 46 13:33:01 7 |
|
134 |
166 164 3 seconds ago |
|
772
by vimboss
updated for version 7.0226 |
135 |
|
136 |
The "number" column is the change number. This number |
|
137 |
continuously increases and can be used to identify a |
|
138 |
specific undo-able change, see |:undo|. |
|
139 |
The "changes" column is the number of changes to this |
|
140 |
leaf from the root of the tree. |
|
2102.2.508
by Bram Moolenaar
Updated runtime files. |
141 |
The "when" column is the date and time when this |
142 |
change was made. The four possible formats are: |
|
143 |
N seconds ago |
|
144 |
HH:MM:SS hour, minute, seconds |
|
145 |
MM/DD HH:MM:SS idem, with month and day |
|
146 |
YYYY/MM/DD HH:MM:SS idem, with year |
|
2102.2.408
by Bram Moolenaar
Updated runtime files. |
147 |
The "saved" column specifies, if this change was |
148 |
written to disk and which file write it was. This can |
|
2102.2.423
by Bram Moolenaar
Runtime file updates. |
149 |
be used with the |:later| and |:earlier| commands. |
2102.2.107
by Bram Moolenaar
Add file save counter to undo information. Add undotree() function. |
150 |
For more details use the |undotree()| function. |
772
by vimboss
updated for version 7.0226 |
151 |
|
758
by vimboss
updated for version 7.0224 |
152 |
*g-* |
153 |
g- Go to older text state. With a count repeat that many |
|
154 |
times. {not in Vi} |
|
155 |
*:ea* *:earlier* |
|
156 |
:earlier {count} Go to older text state {count} times. |
|
157 |
:earlier {N}s Go to older text state about {N} seconds before. |
|
158 |
:earlier {N}m Go to older text state about {N} minutes before. |
|
159 |
:earlier {N}h Go to older text state about {N} hours before. |
|
2102.2.108
by Bram Moolenaar
Added ":earlier 1f" and ":later 1f". |
160 |
:earlier {N}d Go to older text state about {N} days before. |
161 |
||
162 |
:earlier {N}f Go to older text state {N} file writes before. |
|
2102.2.408
by Bram Moolenaar
Updated runtime files. |
163 |
When changes were made since the last write |
2102.2.108
by Bram Moolenaar
Added ":earlier 1f" and ":later 1f". |
164 |
":earlier 1f" will revert the text to the state when |
165 |
it was written. Otherwise it will go to the write |
|
166 |
before that. |
|
167 |
When at the state of the first file write, or when |
|
168 |
the file was not written, ":earlier 1f" will go to |
|
169 |
before the first change. |
|
758
by vimboss
updated for version 7.0224 |
170 |
|
171 |
*g+* |
|
172 |
g+ Go to newer text state. With a count repeat that many |
|
173 |
times. {not in Vi} |
|
174 |
*:lat* *:later* |
|
175 |
:later {count} Go to newer text state {count} times. |
|
176 |
:later {N}s Go to newer text state about {N} seconds later. |
|
177 |
:later {N}m Go to newer text state about {N} minutes later. |
|
178 |
:later {N}h Go to newer text state about {N} hours later. |
|
2102.2.108
by Bram Moolenaar
Added ":earlier 1f" and ":later 1f". |
179 |
:later {N}d Go to newer text state about {N} days later. |
180 |
||
181 |
:later {N}f Go to newer text state {N} file writes later. |
|
182 |
When at the state of the last file write, ":later 1f" |
|
183 |
will go to the newest text state. |
|
758
by vimboss
updated for version 7.0224 |
184 |
|
772
by vimboss
updated for version 7.0226 |
185 |
|
758
by vimboss
updated for version 7.0224 |
186 |
Note that text states will become unreachable when undo information is cleared |
187 |
for 'undolevels'. |
|
188 |
||
189 |
Don't be surprised when moving through time shows multiple changes to take |
|
190 |
place at a time. This happens when moving through the undo tree and then |
|
191 |
making a new change. |
|
192 |
||
193 |
EXAMPLE |
|
194 |
||
195 |
Start with this text: |
|
196 |
one two three ~ |
|
197 |
||
198 |
Delete the first word by pressing "x" three times: |
|
199 |
ne two three ~ |
|
200 |
e two three ~ |
|
201 |
two three ~ |
|
202 |
||
203 |
Now undo that by pressing "u" three times: |
|
204 |
e two three ~ |
|
205 |
ne two three ~ |
|
206 |
one two three ~ |
|
207 |
||
208 |
Delete the second word by pressing "x" three times: |
|
209 |
one wo three ~ |
|
210 |
one o three ~ |
|
211 |
one three ~ |
|
212 |
||
213 |
Now undo that by using "g-" three times: |
|
214 |
one o three ~ |
|
215 |
one wo three ~ |
|
216 |
two three ~ |
|
217 |
||
218 |
You are now back in the first undo branch, after deleting "one". Repeating |
|
219 |
"g-" will now bring you back to the original text: |
|
220 |
e two three ~ |
|
221 |
ne two three ~ |
|
222 |
one two three ~ |
|
223 |
||
224 |
Jump to the last change with ":later 1h": |
|
225 |
one three ~ |
|
226 |
||
227 |
And back to the start again with ":earlier 1h": |
|
228 |
one two three ~ |
|
229 |
||
230 |
||
231 |
Note that using "u" and CTRL-R will not get you to all possible text states |
|
232 |
while repeating "g-" and "g+" does. |
|
233 |
||
234 |
============================================================================== |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
235 |
5. Undo persistence *undo-persistence* *persistent-undo* |
236 |
||
237 |
When unloading a buffer Vim normally destroys the tree of undos created for |
|
238 |
that buffer. By setting the 'undofile' option, Vim will automatically save |
|
239 |
your undo history when you write a file and restore undo history when you edit |
|
240 |
the file again. |
|
241 |
||
242 |
The 'undofile' option is checked after writing a file, before the BufWritePost |
|
243 |
autocommands. If you want to control what files to write undo information |
|
244 |
for, you can use a BufWritePre autocommand: > |
|
245 |
au BufWritePre /tmp/* setlocal noundofile |
|
246 |
||
247 |
Vim saves undo trees in a separate undo file, one for each edited file, using |
|
248 |
a simple scheme that maps filesystem paths directly to undo files. Vim will |
|
249 |
detect if an undo file is no longer synchronized with the file it was written |
|
250 |
for (with a hash of the file contents) and ignore it when the file was changed |
|
2102.2.452
by Bram Moolenaar
Updated runtile files. |
251 |
after the undo file was written, to prevent corruption. An undo file is also |
252 |
ignored if its owner differs from the owner of the edited file. Set 'verbose' |
|
2102.2.1237
by Bram Moolenaar
Updated runtime files. Add Dutch translations. |
253 |
to get a message about that when opening a file. |
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
254 |
|
255 |
Undo files are normally saved in the same directory as the file. This can be |
|
256 |
changed with the 'undodir' option. |
|
257 |
||
2102.2.66
by Bram Moolenaar
Crypt the text in the undo file if the file itself is crypted. |
258 |
When the file is encrypted, the text in the undo file is also crypted. The |
259 |
same key and method is used. |encryption| |
|
260 |
||
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
261 |
You can also save and restore undo histories by using ":wundo" and ":rundo" |
262 |
respectively: |
|
263 |
*:wundo* *:rundo* |
|
264 |
:wundo[!] {file} |
|
265 |
Write undo history to {file}. |
|
266 |
When {file} exists and it does not look like an undo file |
|
267 |
(the magic number at the start of the file is wrong), then |
|
268 |
this fails, unless the ! was added. |
|
269 |
If it exists and does look like an undo file it is |
|
2102.2.1139
by Bram Moolenaar
updated for version 7.3.423 |
270 |
overwritten. If there is no undo-history, nothing will be |
271 |
written. |
|
272 |
Implementation detail: Overwriting happens by first deleting |
|
273 |
the existing file and then creating a new file with the same |
|
274 |
name. So it is not possible to overwrite an existing undofile |
|
275 |
in a write-protected directory. |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
276 |
{not in Vi} |
277 |
||
278 |
:rundo {file} Read undo history from {file}. |
|
279 |
{not in Vi} |
|
280 |
||
281 |
You can use these in autocommands to explicitly specify the name of the |
|
282 |
history file. E.g.: > |
|
283 |
||
2102.2.63
by Bram Moolenaar
Added the undofile() function. Updated runtime files. |
284 |
au BufReadPost * call ReadUndo() |
285 |
au BufWritePost * call WriteUndo() |
|
286 |
func ReadUndo() |
|
287 |
if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) |
|
288 |
rundo %:h/UNDO/%:t |
|
289 |
endif |
|
290 |
endfunc |
|
291 |
func WriteUndo() |
|
292 |
let dirname = expand('%:h') . '/UNDO' |
|
293 |
if !isdirectory(dirname) |
|
294 |
call mkdir(dirname) |
|
295 |
endif |
|
296 |
wundo %:h/UNDO/%:t |
|
297 |
endfunc |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
298 |
|
299 |
You should keep 'undofile' off, otherwise you end up with two undo files for |
|
300 |
every write. |
|
2102.2.63
by Bram Moolenaar
Added the undofile() function. Updated runtime files. |
301 |
|
302 |
You can use the |undofile()| function to find out the file name that Vim would |
|
303 |
use. |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
304 |
|
305 |
Note that while reading/writing files and 'undofile' is set most errors will |
|
306 |
be silent, unless 'verbose' is set. With :wundo and :rundo you will get more |
|
307 |
error messages, e.g., when the file cannot be read or written. |
|
308 |
||
309 |
NOTE: undo files are never deleted by Vim. You need to delete them yourself. |
|
310 |
||
311 |
Reading an existing undo file may fail for several reasons: |
|
312 |
*E822* It cannot be opened, because the file permissions don't allow it. |
|
313 |
*E823* The magic number at the start of the file doesn't match. This usually |
|
314 |
means it is not an undo file. |
|
315 |
*E824* The version number of the undo file indicates that it's written by a |
|
316 |
newer version of Vim. You need that newer version to open it. Don't |
|
317 |
write the buffer if you want to keep the undo info in the file. |
|
2102.2.42
by Bram Moolenaar
Fix uninit memory read in undo code. Fix uint32_t in proto file. |
318 |
"File contents changed, cannot use undo info" |
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
319 |
The file text differs from when the undo file was written. This means |
2102.2.42
by Bram Moolenaar
Fix uninit memory read in undo code. Fix uint32_t in proto file. |
320 |
the undo file cannot be used, it would corrupt the text. This also |
321 |
happens when 'encoding' differs from when the undo file was written. |
|
2102.2.58
by Bram Moolenaar
Various improvements to undo file code to make it more robust. |
322 |
*E825* The undo file does not contain valid contents and cannot be used. |
2102.2.78
by Bram Moolenaar
Fix a few compiler warnings. Fix crash with encrypted undo file. |
323 |
*E826* The undo file is encrypted but decryption failed. |
324 |
*E827* The undo file is encrypted but this version of Vim does not support |
|
325 |
encryption. Open the file with another Vim. |
|
326 |
*E832* The undo file is encrypted but 'key' is not set, the text file is not |
|
327 |
encrypted. This would happen if the text file was written by Vim |
|
328 |
encrypted at first, and later overwritten by not encrypted text. |
|
329 |
You probably want to delete this undo file. |
|
2102.2.65
by Bram Moolenaar
Made reading/writing undo info a bit more robust. |
330 |
"Not reading undo file, owner differs" |
331 |
The undo file is owned by someone else than the owner of the text |
|
332 |
file. For safety the undo file is not used. |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
333 |
|
334 |
Writing an undo file may fail for these reasons: |
|
335 |
*E828* The file to be written cannot be created. Perhaps you do not have |
|
336 |
write permissions in the directory. |
|
2102.2.65
by Bram Moolenaar
Made reading/writing undo info a bit more robust. |
337 |
"Cannot write undo file in any directory in 'undodir'" |
338 |
None of the directories in 'undodir' can be used. |
|
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
339 |
"Will not overwrite with undo file, cannot read" |
340 |
A file exists with the name of the undo file to be written, but it |
|
341 |
cannot be read. You may want to delete this file or rename it. |
|
342 |
"Will not overwrite, this is not an undo file" |
|
343 |
A file exists with the name of the undo file to be written, but it |
|
344 |
does not start with the right magic number. You may want to delete |
|
345 |
this file or rename it. |
|
2102.2.408
by Bram Moolenaar
Updated runtime files. |
346 |
"Skipping undo file write, nothing to undo" |
347 |
There is no undo information to be written, nothing has been changed |
|
2102.2.65
by Bram Moolenaar
Made reading/writing undo info a bit more robust. |
348 |
or 'undolevels' is negative. |
2102.2.41
by Bram Moolenaar
Included patch for persistent undo. Lots of changes and added test. |
349 |
*E829* An error occurred while writing the undo file. You may want to try |
350 |
again. |
|
351 |
||
352 |
============================================================================== |
|
353 |
6. Remarks about undo *undo-remarks* |
|
7
by vimboss
updated for version 7.0001 |
354 |
|
355 |
The number of changes that are remembered is set with the 'undolevels' option. |
|
356 |
If it is zero, the Vi-compatible way is always used. If it is negative no |
|
357 |
undo is possible. Use this if you are running out of memory. |
|
358 |
||
2102.2.76
by Bram Moolenaar
Use full path in undofile(). Updated docs. |
359 |
*clear-undo* |
360 |
When you set 'undolevels' to -1 the undo information is not immediately |
|
361 |
cleared, this happens at the next change. To force clearing the undo |
|
362 |
information you can use these commands: > |
|
363 |
:let old_undolevels = &undolevels |
|
364 |
:set undolevels=-1 |
|
365 |
:exe "normal a \<BS>\<Esc>" |
|
366 |
:let &undolevels = old_undolevels |
|
367 |
:unlet old_undolevels |
|
368 |
||
7
by vimboss
updated for version 7.0001 |
369 |
Marks for the buffer ('a to 'z) are also saved and restored, together with the |
370 |
text. {Vi does this a little bit different} |
|
371 |
||
372 |
When all changes have been undone, the buffer is not considered to be changed. |
|
373 |
It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note |
|
374 |
that this is relative to the last write of the file. Typing "u" after ":w" |
|
375 |
actually changes the buffer, compared to what was written, so the buffer is |
|
376 |
considered changed then. |
|
377 |
||
378 |
When manual |folding| is being used, the folds are not saved and restored. |
|
379 |
Only changes completely within a fold will keep the fold as it was, because |
|
380 |
the first and last line of the fold don't change. |
|
381 |
||
382 |
The numbered registers can also be used for undoing deletes. Each time you |
|
383 |
delete text, it is put into register "1. The contents of register "1 are |
|
384 |
shifted to "2, etc. The contents of register "9 are lost. You can now get |
|
385 |
back the most recent deleted text with the put command: '"1P'. (also, if the |
|
386 |
deleted text was the result of the last delete or copy operation, 'P' or 'p' |
|
387 |
also works as this puts the contents of the unnamed register). You can get |
|
388 |
back the text of three deletes ago with '"3P'. |
|
389 |
||
390 |
*redo-register* |
|
391 |
If you want to get back more than one part of deleted text, you can use a |
|
392 |
special feature of the repeat command ".". It will increase the number of the |
|
393 |
register used. So if you first do ""1P", the following "." will result in a |
|
394 |
'"2P'. Repeating this will result in all numbered registers being inserted. |
|
395 |
||
396 |
Example: If you deleted text with 'dd....' it can be restored with |
|
397 |
'"1P....'. |
|
398 |
||
399 |
If you don't know in which register the deleted text is, you can use the |
|
400 |
:display command. An alternative is to try the first register with '"1P', and |
|
401 |
if it is not what you want do 'u.'. This will remove the contents of the |
|
402 |
first put, and repeat the put command for the second register. Repeat the |
|
403 |
'u.' until you got what you want. |
|
404 |
||
405 |
vim:tw=78:ts=8:ft=help:norl: |