基本的文件恢复已经在用户手册中解释了: usr_11.txt 。
另一种恢复方式是在启动 Vim 后使用 ":recover" 命令。当您用 Vim 编辑一个文件并且
得到一个 "注意: 已找到一个交换文件 ..." 这样的提示时,这样比较方便。这种情况
下,一个简单的 ":recover" 命令就可以完成所有的工作。您也可以在使用 ":recover"
命令时指定文件名或者交换文件名:
:rec:recoverE305E306E307
:rec[over] [file] 试图从交换文件中恢复 [file]。如果没有指定 [file],使用
当前缓冲区的文件名。当前缓冲区中的内容会丢失。如果缓冲
区已经被修改,此命令失效。
:rec[over]! [file] 类似于 ":recover",但当前缓冲区中的任何改变都会丢失。
E312E309E310
在交换文件被损坏时,Vim 仿佛有些智能,知道接下来该怎么做。如果 Vim 对于找到的
文件有所怀疑,它会给出一个出错信息,并且在文本中插入含有 "???" 的行。如果您在
恢复的时候看到了出错信息,请在文件中查找 "???" 并确定到底哪里出了问题。或许您
仍然可以通过剪切和粘贴来取回可用的信息。
最常见的信息是 "???LINES MISSING"。这表示 Vim 无法从原文件中读取文本。通常在系
统崩溃而导致部分原文件无法及时写入磁盘时会出现这样的情况。
在覆盖原文件并删除交换文件之前,请务必确定您所作的恢复是成功的。先把恢复出来的
文件存到别的地方,然后运行 'diff' 来确定是否已经所需要的改动,是个好习惯。也可
使用 :DiffOrig 。
当您确定恢复成功后,请删除交换文件。否则,您会继续得到 ".swp" 文件已经存在的警
告信息。
加 密 和 交 换 文 件 :recover-crypt
如果文本文件经过加密,交换文件也同样要加密。这使得恢复稍微复杂一些。从交换文件
恢复而又用到加密时,你需要输入一到两次加密密钥。
如果文本文件不再存在,只需要输入加密密钥一次来解密交换文件。
如果文本文件存在,其加密方式可能与交换文件不同。你需要输入加密密钥两次:
Need encryption key for "/tmp/tt" Enter encryption key: ****** "/tmp/tt" [crypted] 23200L, 522129C Using swap file "/tmp/.tt.swp" Original file "/tmp/tt" Swap file is encrypted: "/tmp/.tt.swp" If you entered a new crypt key but did not write the text file, enter the new crypt key. If you wrote the text file after changing the crypt key press enter to use the same key for text file and swap file Enter encryption key:
有两种可能的情况:
1. 加密密钥没有改变,或者在改变后才写入文本文件。你需要输入加密密钥两次。第二
次,按回车即可。这样就会应用相同的密钥来解密文本文件和交换文件。
2. 输入了新加密密钥,但之后没有保存文本文件。Vim 会使用新密钥来加密交换文件,
但文本文件仍然会使用旧密钥来加密。第二次提示时要输入新密钥。
注意 恢复后,交换文件的密钥会用于文本文件。写入文本文件时,需要使用新密钥。
vim:tw=78:ts=8:noet:ft=help:norl: