我可以恢复在上次vim更改期间丢失的代码吗?

问题描述

| 我很伤心,我通过使用vim删除错误功能而不提交到SVN服务器 编译后,我发现自己犯了错误。我也通过vim来“制作”文件。 现在我还没有关闭文件,并且它具有.swp文件。 我尝试使用“ u”命令恢复删除,但失败。 vim说这是最新的变化。叹息...。无论如何,我可以恢复功能吗? 万分感谢。     

解决方法

为了使Drasils指针更加明确:
 :undolist
g-表示“回到过去” g +以“及时前进” Vim 7.3+具有undo'branchs':意味着即使线性历史记录被覆盖,它也将保存状态快照(因此,简单的u和无法访问)     ,Vim通常会将任何编辑过的文件的先前版本保存为备份,并附加ѭ1-您可以检查该文件是否存在以及是否存在正确的内容。     ,我不知道您是否可以在这里恢复某些内容,但是将来,如果您使用vim 7.3,则应该激活我在上一条评论中说明的这些选项。 我必须说savevers插件为我节省了很多时间;-)     ,有几种方法可以恢复由于崩溃或无意中关闭程序而无意间丢失的文本。 使用持久撤销。持久撤消提供了点2和点3的交换/备份文件选项提供的几乎所有功能,以及一些其他选项,例如细粒度的历史记录遍历。 一种。将
persistent-undo
设置为: 把它放在你的
.vimrc
中:
set undofile
set undodir=~/.vim/undodir
b。创建撤消目录
mkdir ~/.vim/undodir
C。要撤消更改,请使用以下任一选项 1)正常模式下的
g+
进入历史记录 2)普通模式下的
g-
可追溯到历史记录 3)。
:earlier 20s
时光倒退20s或
earlier 10m
时光倒退10min等 4)
:later 20s
提前20秒或ѭ12time提前10分钟等 5)。使用
:undolist
获取撤消更改列表 d。要使撤消分支可视化,可以使用use14之类的插件:http://bitbucket.org/sjl/gundo.vim/来可视化分支。 使用备份文件 一种。在你的
.vimrc
中使用它
set backup
b。将备份目录放入您的“ 3”来建立备份目录
set backupdir=~/tmp/
C。通过在ѭ3中设置此名称,设置要添加到备份文件中的备份文件名。
set backupext=string
使用交换文件 一种。在你的
.vimrc
中使用它
set swapfile
b。通过在您的
.vimrc
中建立交换目录。这可能不是一个好主意,因为它会阻止您使用两个具有相同名称的文件,或者导致交换文件名冲突。
set directory=~/tmp/
更好的选择是提供多个路径,因此,如果vim遇到冲突,则可以将其保存到可以使用写入的目录中。
set directory=,~/tmp/
在这种情况下,它将尝试将交换文件写入当前目录。如果不能,它将尝试将其写入the26ѭ目录 C。通过在ѭ3中设置此名称,设置要添加到备份文件中的备份文件名。
set backupext=string
TL; DR使用
persistent-undo
。它提供了
swap
backup
的几乎所有功能,并提供了fea​​tures31ѭ和
swap
文件选项所没有的其他功能,例如粒度还原。 参考文献 1. ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf