不使用undo命令从.un~文件中恢复vim文件

时间:2013-09-05 08:07:02

标签: vim

如何在不undo的情况下从undo文件恢复vim文件?

我在添加文本时保存了一个vim文件。然后我运行了一个删除文件内容的python命令,我可以看到该文件的.un~文件中包含的文件中的一些单词。当我尝试在文件中撤消时,它会显示Already at latest change。我在交换文件目录中找不到交换文件。

4 个答案:

答案 0 :(得分:10)

你做不到。撤消信息链接到Vim对文件内容的最后了解;当他们不再对应时,Vim无法重新应用这些更改。这在:help undo-persistence

中记录
  

Vim将检测撤消文件是否不再与文件同步   写入(使用文件内容的哈希值)并在文件出现时忽略它   写入撤消文件后更改,以防止损坏。

您可以做的最好是尝试手动抢救撤消文件中的可识别位,例如使用十六进制编辑器或Vim的二进制模式。

答案 1 :(得分:6)

这不太可能,因为撤消文件仅包含在单个更改中更改的文本。如果你在某个时候重新加载了文件,那么undofile应该包含完整的缓冲区,并从那里开始理论上可以恢复文件(通过撤销状态)。

我之前在vim_use邮件列表herehere (which even contains a patch, that let's you force reading in the undo-file)

撰写了相关文章

您可以尝试修补vim,看看是否可以恢复至少一些数据。

答案 2 :(得分:1)

正如其他答案所指出的那样,您无法从vim的撤消文件中恢复整个文件,仅因为vim似乎仅在撤消文件中保留了编辑差异,而不是整个内容。 (这很有意义,因为它节省了空间。)

可以尝试的一件事是从撤消文件中提取可能的内容:

$ strings <undo-file>

输出将不会很漂亮,但是您最终可能会找到对您有价值的东西。

答案 3 :(得分:0)

提醒您,如果您已在.vimrc文件中设置

set backupdir=$HOME/tmp

您可能拥有可读且可以重命名的文件的临时副本