我刚刚删除了文件中的一堆文本并保存了它。
是否可以恢复旧版本的文件?
我知道我应该进行备份,只是试试运气。
答案1
如果您正在使用vim
,您也许能够恢复部分或全部删除的文本,因为 vim 将最近删除的 9 个文本存储在寄存器 1 到 9 中,.viminfo
当您退出时,这些文件将保存到您的主目录中调用的文件中vim
。
这个寄存器保存的~/.viminfo
是全局的,对于所有已经编辑过的文件,不是每个编辑的文件一组。因此,如果您编辑了其他文件并删除了任何行,则部分或全部删除的文本将消失。
如果您还没有从其他文件中编辑和删除(许多)行,那么您删除的(某些)行很可能仍然存在。
:registers
您可以使用中的命令检查您的文本是否仍在这些寄存器中vim
。
运行
vim filename
(其中文件名是您意外清除的文件的名称)输入
:registers
(或缩写形式,即:reg
)并点击enter。检查输出以查看是否存在与您的文本类似的内容。
例如,在我的系统上,我看到类似以下内容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_Tips_Wiki和https://vi.stackexchange.com/了解更多一般vim
信息。
如果您在寄存器中看到一些已删除的文本,请键入",后跟寄存器的编号,然后p将其粘贴到当前缓冲区的当前位置。
例如,如果我想恢复上面的寄存器 1 和 2,我会输入:
"1p"2p
这些寄存器将被粘贴到我当前的编辑缓冲区中。
注意:一旦您键入任何内容(例如"
开始粘贴寄存器),:registers
显示就会消失。因此,要么记下要恢复的寄存器,要么:registers
根据需要提醒自己经常键入。