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

Ros*_*one 12 vim

如何在undo不点击的情况下从文件中恢复vim文件undo

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

Ing*_*kat 12

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

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

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


Chr*_*ndt 6

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

我之前在这里这里的vim_use邮件列表中已经写过这个(它甚至包含一个补丁,让你强制在undo文件中读取)

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


aud*_*ude 5

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

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

$ strings <undo-file>
Run Code Online (Sandbox Code Playgroud)

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