usr_11.txt (12672B)
1 *usr_11.txt* Nvim 2 3 4 VIM USER MANUAL by Bram Moolenaar 5 6 7 Recovering from a crash 8 9 10 Did your computer crash? And you just spent hours editing? Don't panic! Vim 11 stores enough information to be able to restore most of your work. This 12 chapter shows you how to get your work back and explains how the swap file is 13 used. 14 15 |11.1| Basic recovery 16 |11.2| Where is the swap file? 17 |11.3| Crashed or not? 18 |11.4| Further reading 19 20 Next chapter: |usr_12.txt| Clever tricks 21 Previous chapter: |usr_10.txt| Making big changes 22 Table of contents: |usr_toc.txt| 23 24 ============================================================================== 25 *11.1* Basic recovery 26 27 In most cases recovering a file is quite simple, assuming you know which file 28 you were editing (and the harddisk is still working). Start Vim on the file, 29 with the "-r" argument added: > 30 31 vim -r help.txt 32 33 Vim will read the swap file (used to store text you were editing) and may read 34 bits and pieces of the original file. If Vim recovered your changes you will 35 see these messages (with different file names, of course): 36 37 Using swap file ".help.txt.swp" ~ 38 Original file "~/vim/runtime/doc/help.txt" ~ 39 Recovery completed. You should check if everything is OK. ~ 40 (You might want to write out this file under another name ~ 41 and run diff with the original file to check for changes) ~ 42 You may want to delete the .swp file now. ~ 43 44 To be on the safe side, write this file under another name: > 45 46 :write help.txt.recovered 47 48 Compare the file with the original file to check if you ended up with what you 49 expected. Diff mode is very useful for this |08.7|. For example: > 50 51 :write help.txt.recovered 52 :edit # 53 :diffsp help.txt 54 55 Watch out for the original file to contain a more recent version (you saved 56 the file just before the computer crashed). And check that no lines are 57 missing (something went wrong that Vim could not recover). 58 If Vim produces warning messages when recovering, read them carefully. 59 This is rare though. 60 61 If the recovery resulted in text that is exactly the same as the file 62 contents, you will get this message: 63 64 Using swap file ".help.txt.swp" ~ 65 Original file "~/vim/runtime/doc/help.txt" ~ 66 Recovery completed. Buffer contents equals file contents. ~ 67 You may want to delete the .swp file now. ~ 68 69 This usually happens if you already recovered your changes, or you wrote the 70 file after making changes. It is safe to delete the swap file now. 71 72 It is normal that the last few changes can not be recovered. Vim flushes the 73 changes to disk when you don't type for about four seconds, or after typing 74 about two hundred characters. This is set with the 'updatetime' and 75 'updatecount' options. Thus when Vim didn't get a chance to save itself when 76 the system went down, the changes after the last flush will be lost. 77 78 If you were editing without a file name, give an empty string as argument: > 79 80 vim -r "" 81 82 You must be in the right directory, otherwise Vim can't find the swap file. 83 84 ============================================================================== 85 *11.2* Where is the swap file? 86 87 Vim can store the swap file in several places. To find it, change to the 88 directory of the file, and use: > 89 90 vim -r 91 92 Vim will list the swap files that it can find. It will also look in other 93 directories where the swap file for files in the current directory may be 94 located. It will not find swap files in any other directories though, it 95 doesn't search the directory tree. 96 The output could look like this: 97 98 Swap files found: ~ 99 In current directory: ~ 100 1. .main.c.swp ~ 101 owned by: mool dated: Tue May 29 21:00:25 2001 ~ 102 file name: ~mool/vim/vim6/src/main.c ~ 103 modified: YES ~ 104 user name: mool host name: masaka.moolenaar.net ~ 105 process ID: 12525 ~ 106 In directory ~/tmp: ~ 107 -- none -- ~ 108 In directory /var/tmp: ~ 109 -- none -- ~ 110 In directory /tmp: ~ 111 -- none -- ~ 112 113 If there are several swap files that look like they may be the one you want to 114 use, a list is given of these swap files and you are requested to enter the 115 number of the one you want to use. Carefully look at the dates to decide 116 which one you want to use. 117 In case you don't know which one to use, just try them one by one and check 118 the resulting files if they are what you expected. 119 120 121 USING A SPECIFIC SWAP FILE 122 123 If you know which swap file needs to be used, you can recover by giving the 124 swap file name. Vim will then find out the name of the original file from 125 the swap file. 126 127 Example: > 128 vim -r .help.txt.swo 129 130 This is also handy when the swap file is in another directory than expected. 131 Vim recognizes files with the pattern "*.s[uvw][a-z]" as swap files. 132 133 If this still does not work, see what file names Vim reports and rename the 134 files accordingly. Check the 'directory' option to see where Vim may have 135 put the swap file. 136 137 Note: 138 Vim tries to find the swap file by searching the directories in the 139 'dir' option, looking for files that match "filename.sw?". If 140 wildcard expansion doesn't work (e.g., when the 'shell' option is 141 invalid), Vim does a desperate try to find the file "filename.swp". 142 If that fails too, you will have to give the name of the swapfile 143 itself to be able to recover the file. 144 145 ============================================================================== 146 *11.3* Crashed or not? *ATTENTION* *E325* 147 148 Vim tries to protect you from doing stupid things. Suppose you innocently 149 start editing a file, expecting the contents of the file to show up. Instead, 150 Vim produces a very long message: 151 152 E325: ATTENTION ~ 153 Found a swap file by the name ".main.c.swp" ~ 154 owned by: mool dated: Tue May 29 21:09:28 2001 ~ 155 file name: ~mool/vim/vim6/src/main.c ~ 156 modified: no ~ 157 user name: mool host name: masaka.moolenaar.net ~ 158 process ID: 12559 (still running) ~ 159 While opening file "main.c" ~ 160 dated: Tue May 29 19:46:12 2001 ~ 161 ~ 162 (1) Another program may be editing the same file. ~ 163 If this is the case, be careful not to end up with two ~ 164 different instances of the same file when making changes. ~ 165 Quit, or continue with caution. ~ 166 ~ 167 (2) An edit session for this file crashed. ~ 168 If this is the case, use ":recover" or "vim -r main.c" ~ 169 to recover the changes (see ":help recovery"). ~ 170 If you did this already, delete the swap file ".main.c.swp" ~ 171 to avoid this message. ~ 172 173 You get this message, because, when starting to edit a file, Vim checks if a 174 swap file already exists for that file. If there is one, there must be 175 something wrong. It may be one of these two situations. 176 177 1. Another edit session is active on this file. Look in the message for the 178 line with "process ID". It might look like this: 179 180 process ID: 12559 (still running) ~ 181 182 The text "(still running)" indicates that the process editing this file 183 runs on the same computer. When working on a non-Unix system you will not 184 get this extra hint. When editing a file over a network, you may not see 185 the hint, because the process might be running on another computer. In 186 those two cases you must find out what the situation is yourself. 187 If there is another Vim editing the same file, continuing to edit will 188 result in two versions of the same file. The one that is written last will 189 overwrite the other one, resulting in loss of changes. You better quit 190 this Vim. 191 192 2. The swap file might be the result from a previous crash of Vim or the 193 computer. Check the dates mentioned in the message. If the date of the 194 swap file is newer than the file you were editing, and this line appears: 195 196 modified: YES ~ 197 198 Then you very likely have a crashed edit session that is worth recovering. 199 If the date of the file is newer than the date of the swap file, then 200 either it was changed after the crash (perhaps you recovered it earlier, 201 but didn't delete the swap file?), or else the file was saved before the 202 crash but after the last write of the swap file (then you're lucky: you 203 don't even need that old swap file). Vim will warn you for this with this 204 extra line: 205 206 NEWER than swap file! ~ 207 208 209 NOTE that in the following situation Vim knows the swap file is not useful and 210 will automatically delete it: 211 - The file is a valid swap file (Magic number is correct). 212 - The flag that the file was modified is not set. 213 - The process is not running. 214 215 You can programmatically deal with this situation with the |FileChangedShell| 216 autocommand event. 217 218 219 UNREADABLE SWAP FILE ~ 220 221 Sometimes the line 222 223 [cannot be read] ~ 224 225 will appear under the name of the swap file. This can be good or bad, 226 depending on circumstances. 227 228 It is good if a previous editing session crashed without having made any 229 changes to the file. Then a directory listing of the swap file will show 230 that it has zero bytes. You may delete it and proceed. 231 232 It is slightly bad if you don't have read permission for the swap file. You 233 may want to view the file read-only, or quit. On multi-user systems, if you 234 yourself did the last changes under a different login name, a logout 235 followed by a login under that other name might cure the "read error". Or 236 else you might want to find out who last edited (or is editing) the file and 237 have a talk with them. 238 239 It is very bad if it means there is a physical read error on the disk 240 containing the swap file. Fortunately, this almost never happens. 241 You may want to view the file read-only at first (if you can), to see the 242 extent of the changes that were "forgotten". If you are the one in charge of 243 that file, be prepared to redo your last changes. 244 245 246 WHAT TO DO? *swap-exists-choices* 247 248 If dialogs are supported you will be asked to select one of six choices: 249 250 Swap file ".main.c.swp" already exists! ~ 251 [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ 252 253 O Open the file readonly. Use this when you just want to view the file and 254 don't need to recover it. You might want to use this when you know someone 255 else is editing the file, but you just want to look in it and not make 256 changes. 257 258 E Edit the file anyway. Use this with caution! If the file is being edited 259 in another Vim, you might end up with two versions of the file. Vim will 260 try to warn you when this happens, but better be safe than sorry. 261 262 R Recover the file from the swap file. Use this if you know that the swap 263 file contains changes that you want to recover. 264 265 Q Quit. This avoids starting to edit the file. Use this if there is another 266 Vim editing the same file. 267 When you just started Vim, this will exit Vim. When starting Vim with 268 files in several windows, Vim quits only if there is a swap file for the 269 first one. When using an edit command, the file will not be loaded and you 270 are taken back to the previously edited file. 271 272 A Abort. Like Quit, but also abort further commands. This is useful when 273 loading a script that edits several files, such as a session with multiple 274 windows. 275 276 D Delete the swap file. Use this when you are sure you no longer need it. 277 For example, when it doesn't contain changes, or when the file itself is 278 newer than the swap file. 279 On Unix this choice is only offered when the process that created the 280 swap file does not appear to be running. 281 282 If you do not get the dialog (you are running a version of Vim that does not 283 support it), you will have to do it manually. To recover the file, use this 284 command: > 285 286 :recover 287 288 289 Vim cannot always detect that a swap file already exists for a file. This is 290 the case when the other edit session puts the swap files in another directory 291 or when the path name for the file is different when editing it on different 292 machines. Therefore, don't rely on Vim always warning you. 293 294 If you really don't want to see this message, you can add the 'A' flag to the 295 'shortmess' option. But it's very unusual that you need this. 296 297 For programmatic access to the swap file, see |swapinfo()|. 298 299 ============================================================================== 300 *11.4* Further reading 301 302 |swap-file| An explanation about where the swap file will be created and 303 what its name is. 304 |:preserve| Manually flushing the swap file to disk. 305 |:swapname| See the name of the swap file for the current file. 306 'updatecount' Number of key strokes after which the swap file is flushed to 307 disk. 308 'updatetime' Timeout after which the swap file is flushed to disk. 309 'directory' List of directory names where to store the swap file. 310 311 ============================================================================== 312 313 Next chapter: |usr_12.txt| Clever tricks 314 315 Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: