如何在undo不点击的情况下从文件中恢复vim文件undo?
我有一个我添加文本时保存的vim文件.然后我运行了一个删除文件内容的python命令,我可以看到该文件包含在文件文件中的一些单词.un~.当我尝试在文件中撤消时,它说Already at latest change.我在交换文件目录中找不到交换文件.
Ing*_*kat 12
你不能.撤消信息链接到Vim对文件内容的最后了解; 当他们不再对应时,Vim无法重新应用这些更改.这记录在:help undo-persistence:
Vim将检测撤消文件是否不再与其编写的文件同步(使用文件内容的散列),并在写入撤消文件后更改文件时忽略它,以防止损坏.
您可以做的最好的事情是尝试手动抢救撤消文件中的可识别位,例如使用十六进制编辑器或Vim的二进制模式.
这是不可能的,因为撤消文件仅包含在单个更改中更改的文本.如果你在某个时候重新加载文件,那么undofile应该包含完整的缓冲区,并从那里开始理论上可以恢复文件(通过撤销状态).
我之前在这里和这里的vim_use邮件列表中已经写过这个(它甚至包含一个补丁,让你强制在undo文件中读取)
您可以尝试修补vim,看看是否可以恢复至少一些数据.
正如其他答案所指出的那样,您无法从vim的撤消文件中恢复整个文件,仅因为vim似乎仅在撤消文件中保留了编辑差异,而不是整个内容。(这很有意义,因为它节省了空间。)
您可以尝试做的一件事是从撤消文件中提取可能的内容:
$ strings <undo-file>
Run Code Online (Sandbox Code Playgroud)
输出不会很漂亮,但是您最终可能会找到对您有价值的东西。