Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用undo命令从.un~文件恢复vim文件_Vim - Fatal编程技术网

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

不使用undo命令从.un~文件恢复vim文件,vim,Vim,如何从undo文件恢复vim文件而不点击undo 我在添加文本时保存了一个vim文件。然后我运行了一个python命令清空文件的内容,我可以看到文件的.un~文件中包含的一些单词。当我试图在文件中撤消时,它会显示已在进行最新更改。在我的交换文件目录中找不到交换文件。您不能。撤销信息链接到Vim对文件内容的最后了解;当它们不再对应时,Vim无法重新应用更改。这记录在:help undo persistence: Vim将检测撤销文件是否不再与原来的文件同步 为(使用文件内容的散列)编写,并在创建文

如何从
undo
文件恢复vim文件而不点击
undo


我在添加文本时保存了一个vim文件。然后我运行了一个python命令清空文件的内容,我可以看到文件的
.un~
文件中包含的一些单词。当我试图在文件中撤消时,它会显示
已在进行最新更改
。在我的交换文件目录中找不到交换文件。

您不能。撤销信息链接到Vim对文件内容的最后了解;当它们不再对应时,Vim无法重新应用更改。这记录在
:help undo persistence

Vim将检测撤销文件是否不再与原来的文件同步 为(使用文件内容的散列)编写,并在创建文件时忽略它 在写入撤消文件后更改,以防止损坏


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

这完全不可能,因为撤消文件只包含在一次更改中更改的文本。如果您在某个时候重新加载了文件,undo文件应该包含完整的缓冲区,从那里开始,理论上可以恢复文件(通过经历undo状态)

我以前在vim_use mailinglist和


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

如果您在.vimrc文件中设置了

set backupdir=$HOME/tmp

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

,正如其他答案所指出的,您无法从vim的撤销文件中恢复整个文件,因为vim似乎只在撤销文件中保留差异,而不是全部内容。(这很有道理,因为它节省空间。)

不过,您可以尝试从撤消文件中提取可能的内容:

$ strings <undo-file>
$strings

输出将不美观,但最终可能会找到对您有价值的内容。

您无法找到swp文件,因为您已退出vim。
set bk?
set wb?
两个命令的输出是什么?问号
是命令的一部分。我正在尝试获取您的备份设置,以查看是否有可能从vim备份文件还原该文件。我设法在撤消文件上修复了一些正在运行的字符串。更新版本的修补程序:,谢谢!你刚刚救了我一天:)