Mercurial > vim
annotate runtime/doc/recover.txt @ 13885:d1c816cee4d2
Added tag v8.0.1813 for changeset 0ddb61a7404f9b005dc26f091431691c46f805dd
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 10 May 2018 21:30:07 +0200 |
parents | 9f48eab77d62 |
children | 1174611ad715 |
rev | line source |
---|---|
10198
9f48eab77d62
commit https://github.com/vim/vim/commit/bb76f24af2010943387ce696a7092175b4ecccf2
Christian Brabandt <cb@256bit.org>
parents:
5814
diff
changeset
|
1 *recover.txt* For Vim version 8.0. Last change: 2014 Mar 27 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Recovery after a crash *crash-recovery* | |
8 | |
9 You have spent several hours typing in that text that has to be finished | |
10 next morning, and then disaster strikes: Your computer crashes. | |
11 | |
12 DON'T PANIC! | |
13 | |
14 You can recover most of your changes from the files that Vim uses to store | |
15 the contents of the file. Mostly you can recover your work with one command: | |
16 vim -r filename | |
17 | |
18 1. The swap file |swap-file| | |
19 2. Recovery |recovery| | |
20 | |
21 ============================================================================== | |
22 1. The swap file *swap-file* | |
23 | |
24 Vim stores the things you changed in a swap file. Using the original file | |
25 you started from plus the swap file you can mostly recover your work. | |
26 | |
27 You can see the name of the current swap file being used with the command: | |
28 | |
29 :sw[apname] *:sw* *:swapname* | |
30 | |
31 The name of the swap file is normally the same as the file you are editing, | |
32 with the extension ".swp". | |
33 - On Unix, a '.' is prepended to swap file names in the same directory as the | |
34 edited file. This avoids that the swap file shows up in a directory | |
35 listing. | |
36 - On MS-DOS machines and when the 'shortname' option is on, any '.' in the | |
37 original file name is replaced with '_'. | |
38 - If this file already exists (e.g., when you are recovering from a crash) a | |
39 warning is given and another extension is used, ".swo", ".swn", etc. | |
40 - An existing file will never be overwritten. | |
41 - The swap file is deleted as soon as Vim stops editing the file. | |
42 | |
43 Technical: The replacement of '.' with '_' is done to avoid problems with | |
44 MS-DOS compatible filesystems (e.g., crossdos, multidos). If Vim | |
45 is able to detect that the file is on an MS-DOS-like filesystem, a | |
46 flag is set that has the same effect as the 'shortname' option. | |
47 This flag is reset when you start editing another file. | |
48 *E326* | |
49 If the ".swp" file name already exists, the last character is | |
50 decremented until there is no file with that name or ".saa" is | |
51 reached. In the last case, no swap file is created. | |
52 | |
53 By setting the 'directory' option you can place the swap file in another place | |
54 than where the edited file is. | |
55 Advantages: | |
56 - You will not pollute the directories with ".swp" files. | |
57 - When the 'directory' is on another partition, reduce the risk of damaging | |
58 the file system where the file is (in a crash). | |
59 Disadvantages: | |
60 - You can get name collisions from files with the same name but in different | |
61 directories (although Vim tries to avoid that by comparing the path name). | |
62 This will result in bogus ATTENTION warning messages. | |
63 - When you use your home directory, and somebody else tries to edit the same | |
9 | 64 file, he will not see your swap file and will not get the ATTENTION warning |
7 | 65 message. |
66 On the Amiga you can also use a recoverable ram disk, but there is no 100% | |
67 guarantee that this works. Putting swap files in a normal ram disk (like RAM: | |
68 on the Amiga) or in a place that is cleared when rebooting (like /tmp on Unix) | |
69 makes no sense, you will lose the swap file in a crash. | |
70 | |
71 If you want to put swap files in a fixed place, put a command resembling the | |
72 following ones in your .vimrc: | |
73 :set dir=dh2:tmp (for Amiga) | |
74 :set dir=~/tmp (for Unix) | |
75 :set dir=c:\\tmp (for MS-DOS and Win32) | |
76 This is also very handy when editing files on floppy. Of course you will have | |
77 to create that "tmp" directory for this to work! | |
78 | |
79 For read-only files, a swap file is not used. Unless the file is big, causing | |
80 the amount of memory used to be higher than given with 'maxmem' or | |
81 'maxmemtot'. And when making a change to a read-only file, the swap file is | |
82 created anyway. | |
83 | |
5737 | 84 The 'swapfile' option can be reset to avoid creating a swapfile. And the |
85 |:noswapfile| modifier can be used to not create a swapfile for a new buffer. | |
86 | |
5814 | 87 :nos[wapfile] {command} *:nos* *:noswapfile* |
5737 | 88 Execute {command}. If it contains a command that loads a new |
89 buffer, it will be loaded without creating a swapfile and the | |
90 'swapfile' option will be reset. If a buffer already had a | |
91 swapfile it is not removed and 'swapfile' is not reset. | |
7 | 92 |
93 | |
94 Detecting an existing swap file ~ | |
95 | |
96 You can find this in the user manual, section |11.3|. | |
97 | |
98 | |
99 Updating the swapfile ~ | |
100 | |
101 The swap file is updated after typing 200 characters or when you have not | |
102 typed anything for four seconds. This only happens if the buffer was | |
103 changed, not when you only moved around. The reason why it is not kept up to | |
104 date all the time is that this would slow down normal work too much. You can | |
105 change the 200 character count with the 'updatecount' option. You can set | |
106 the time with the 'updatetime' option. The time is given in milliseconds. | |
107 After writing to the swap file Vim syncs the file to disk. This takes some | |
108 time, especially on busy Unix systems. If you don't want this you can set the | |
109 'swapsync' option to an empty string. The risk of losing work becomes bigger | |
110 though. On some non-Unix systems (MS-DOS, Amiga) the swap file won't be | |
111 written at all. | |
112 | |
113 If the writing to the swap file is not wanted, it can be switched off by | |
114 setting the 'updatecount' option to 0. The same is done when starting Vim | |
115 with the "-n" option. Writing can be switched back on by setting the | |
116 'updatecount' option to non-zero. Swap files will be created for all buffers | |
117 when doing this. But when setting 'updatecount' to zero, the existing swap | |
118 files will not be removed, it will only affect files that will be opened | |
119 after this. | |
120 | |
121 If you want to make sure that your changes are in the swap file use this | |
122 command: | |
123 | |
124 *:pre* *:preserve* *E313* *E314* | |
125 :pre[serve] Write all text for all buffers into swap file. The | |
164 | 126 original file is no longer needed for recovery. |
127 This sets a flag in the current buffer. When the '&' | |
128 flag is present in 'cpoptions' the swap file will not | |
129 be deleted for this buffer when Vim exits and the | |
130 buffer is still loaded |cpo-&|. | |
131 {Vi: might also exit} | |
7 | 132 |
133 A Vim swap file can be recognized by the first six characters: "b0VIM ". | |
134 After that comes the version number, e.g., "3.0". | |
135 | |
593 | 136 |
137 Links and symbolic links ~ | |
138 | |
139 On Unix it is possible to have two names for the same file. This can be done | |
140 with hard links and with symbolic links (symlinks). | |
141 | |
142 For hard links Vim does not know the other name of the file. Therefore, the | |
143 name of the swapfile will be based on the name you used to edit the file. | |
144 There is no check for editing the same file by the other name too, because Vim | |
145 cannot find the other swapfile (except for searching all of your harddisk, | |
146 which would be very slow). | |
147 | |
148 For symbolic links Vim resolves the links to find the name of the actual file. | |
149 The swap file name is based on that name. Thus it doesn't matter by what name | |
150 you edit the file, the swap file name will normally be the same. However, | |
151 there are exceptions: | |
152 - When the directory of the actual file is not writable the swapfile is put | |
153 elsewhere. | |
154 - When the symbolic links somehow create a loop you get an *E773* error | |
155 message and the unmodified file name will be used. You won't be able to | |
156 save your file normally. | |
157 | |
7 | 158 ============================================================================== |
159 2. Recovery *recovery* *E308* *E311* | |
160 | |
161 Basic file recovery is explained in the user manual: |usr_11.txt|. | |
162 | |
163 Another way to do recovery is to start Vim and use the ":recover" command. | |
164 This is easy when you start Vim to edit a file and you get the "ATTENTION: | |
165 Found a swap file ..." message. In this case the single command ":recover" | |
166 will do the work. You can also give the name of the file or the swap file to | |
167 the recover command: | |
168 *:rec* *:recover* *E305* *E306* *E307* | |
169 :rec[over] [file] Try to recover [file] from the swap file. If [file] | |
170 is not given use the file name for the current | |
171 buffer. The current contents of the buffer are lost. | |
172 This command fails if the buffer was modified. | |
173 | |
174 :rec[over]! [file] Like ":recover", but any changes in the current | |
175 buffer are lost. | |
176 | |
177 *E312* *E309* *E310* | |
178 Vim has some intelligence about what to do if the swap file is corrupt in | |
179 some way. If Vim has doubt about what it found, it will give an error | |
180 message and insert lines with "???" in the text. If you see an error message | |
181 while recovering, search in the file for "???" to see what is wrong. You may | |
182 want to cut and paste to get the text you need. | |
183 | |
184 The most common remark is "???LINES MISSING". This means that Vim cannot read | |
185 the text from the original file. This can happen if the system crashed and | |
186 parts of the original file were not written to disk. | |
187 | |
188 Be sure that the recovery was successful before overwriting the original | |
189 file or deleting the swap file. It is good practice to write the recovered | |
190 file elsewhere and run 'diff' to find out if the changes you want are in the | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
191 recovered file. Or use |:DiffOrig|. |
7 | 192 |
193 Once you are sure the recovery is ok delete the swap file. Otherwise, you | |
194 will continue to get warning messages that the ".swp" file already exists. | |
195 | |
196 {Vi: recovers in another way and sends mail if there is something to recover} | |
197 | |
2267 | 198 |
199 ENCRYPTION AND THE SWAP FILE *:recover-crypt* | |
200 | |
201 When the text file is encrypted the swap file is encrypted as well. This | |
202 makes recovery a bit more complicated. When recovering from a swap file and | |
203 encryption has been used, you will be asked to enter one or two crypt keys. | |
204 | |
205 If the text file does not exist you will only be asked to enter the crypt key | |
206 for the swap file. | |
207 | |
208 If the text file does exist, it may be encrypted in a different way than the | |
209 swap file. You will be asked for the crypt key twice: | |
210 | |
211 Need encryption key for "/tmp/tt" ~ | |
212 Enter encryption key: ****** ~ | |
213 "/tmp/tt" [crypted] 23200L, 522129C ~ | |
214 Using swap file "/tmp/.tt.swp" ~ | |
215 Original file "/tmp/tt" ~ | |
216 Swap file is encrypted: "/tmp/.tt.swp" ~ | |
217 If you entered a new crypt key but did not write the text file, ~ | |
218 enter the new crypt key. ~ | |
219 If you wrote the text file after changing the crypt key press enter ~ | |
220 to use the same key for text file and swap file ~ | |
221 Enter encryption key: ~ | |
222 | |
223 You can be in one of these two situations: | |
224 | |
225 1. The encryption key was not changed, or after changing the key the text file | |
226 was written. You will be prompted for the crypt key twice. The second | |
227 time you can simply press Enter. That means the same key is used for the | |
228 text file and the swap file. | |
229 2. You entered a new encryption key, but did not save the text file. Vim will | |
230 then use the new key for the swap file, and the text file will still be | |
231 encrypted with the old key. At the second prompt enter the new key. | |
232 | |
233 Note that after recovery the key of the swap file will be used for the text | |
234 file. Thus if you write the text file, you need to use that new key. | |
235 | |
236 | |
7 | 237 vim:tw=78:ts=8:ft=help:norl: |