Vi 撤消更新的文件?

Vi 撤消更新的文件?

我刚刚删除了文件中的一堆文本并保存了它。

是否可以恢复旧版本的文件?

我知道我应该进行备份,只是试试运气。

答案1

如果您正在使用vim,您也许能够恢复部分或全部删除的文本,因为 vim 将最近删除的 9 个文本存储在寄存器 1 到 9 中,.viminfo当您退出时,这些文件将保存到您的主目录中调用的文件中vim

这个寄存器保存的~/.viminfo是全局的,对于所有已经编辑过的文件,不是每个编辑的文件一组。因此,如果您编辑了其他文件并删除了任何行,则部分或全部删除的文本将消失。

如果您还没有从其他文件中编辑和删除(许多)行,那么您删除的(某些)行很可能仍然存在。

:registers您可以使用中的命令检查您的文本是否仍在这些寄存器中vim

  1. 运行vim filename (其中文件名是您意外清除的文件的名称)

  2. 输入:registers(或缩写形式,即:reg)并点击enter

  3. 检查输出以查看是否存在与您的文本类似的内容。

例如,在我的系统上,我看到类似以下内容vim

:reg
--- Registers ---
""   ^J
"0   ^J
"1   You can check to see if your text is still in those registers with the :registers command in vim.^J
"2   If you haven't edited and deleted lines from other files yet, there's a good chance your deleted lines will still be there.^J^J
"3   If you are using vim, you may be able to recover some or all of your deleted text because vim stores the most recent 9 deletion in registers 1 to 9, which are saved to a file called .viminf
"4   ^J
...
...
...

注意:""是“未命名”寄存器,并且始终包含最近的复制或删除的值,并且"0是当前复制寄存器。欲了解更多信息,请参阅如何使用 vim 寄存器。谷歌也给我找到了这个博客文章这很好地描述了它。

:help registers当然,还有内置的帮助,http://www.vim.org/, http://vim.wikia.com/wiki/Vim_Tip​​s_Wikihttps://vi.stackexchange.com/了解更多一般vim信息。

  1. 如果您在寄存器中看到一些已删除的文本,请键入",后跟寄存器的编号,然后p将其粘贴到当前缓冲区的当前位置。

    例如,如果我想恢复上面的寄存器 1 和 2,我会输入:

    "1p"2p

    这些寄存器将被粘贴到我当前的编辑缓冲区中。

注意:一旦您键入任何内容(例如"开始粘贴寄存器),:registers显示就会消失。因此,要么记下要恢复的寄存器,要么:registers根据需要提醒自己经常键入。

相关内容