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

时间:2011-04-14 11:26:46

标签: linux vim

我很遗憾我使用vim删除了错误的功能而没有提交SVN服务器 编译之后我发现我犯了错误。我也通过vim''创建'文件。

现在我还没有关闭文件,它有.swp文件。 我尝试使用'u'命令恢复删除但失败了。 vim说这是最新的变化。感叹....无论如何,我可以恢复我的功能吗?

百万感谢。

4 个答案:

答案 0 :(得分:8)

使Drasils指针更明确:

 :undolist

g - “回到过去”

g + 以'及时前进'

Vim 7.3+具有撤消'分支':意味着它将保存状态快照,即使线性历史被覆盖(因此无法通过简单的 u

答案 1 :(得分:2)

Vim通常保存任何编辑为备份的文件的先前版本,并附加~ - 您可以检查该文件是否存在,如果存在,是否有正确的内容。

答案 2 :(得分:2)

我不知道你是否可以在这里恢复一些东西,但是对于将来,如果你使用vim 7.3,你应该激活我在my previous comment中解释的这些选项。

我必须说savevers插件为我节省了很多时间; - )

答案 3 :(得分:0)

有几种方法可以恢复由于崩溃而无意中丢失的文本,或者是因为您无意中关闭了程序。

  1. 使用persistent-undo。持久性撤消提供了#2和#3点中交换/备份文件选项提供的几乎所有功能,以及一些其他选项,如粒度历史记录遍历。

    一个。设置persistent-undo

    将其放入.vimrc

    set undofile set undodir=~/.vim/undodir

    湾创建undodir

    mkdir ~/.vim/undodir

    ℃。要撤消更改,请使用以下任一选项

    1)g+在正常模式下继续前进

    2)g-在正常模式下往返历史

    3)。 earlier 20s可以追溯到20秒或earlier 10m以及时间返回10分钟等等

    4)later 20s及时前进20秒或later 10m及时前进10分钟

    5)。使用undol获取撤消更改列表

    d。要获取撤消分支的可视化,您可以使用gundo.vimhttp://bitbucket.org/sjl/gundo.vim/等插件来显示分支

  2. 使用备份文件

    一个。在.vimrc中使用此功能 set backup

    湾将其放在.vimrc中,设置备份目录 `set backupdir =〜/ tmp /

    ℃。通过在.vimrc中进行设置,将备份文件名设置为添加到备份文件中 set backupext=string

  3. 使用交换文件

    一个。在.vimrc中使用此功能 set swapfile

    湾将此放在.vimrc中,设置交换目录。这可能不是一个好主意,因为它会阻止您拥有两个具有相同名称的文件,或者导致交换文件名中出现冲突。

    set directory=~/tmp/

    更好的选择是提供多个路径,因此如果vim遇到冲突,则可以将其保存到可以使用

    写入的目录中。

    set directory=,~/tmp/

    在这种情况下,它会尝试将交换文件写入当前目录。如果它不能,那么它将尝试将其写入〜/ tmp目录

    ℃。通过在.vimrc

    中进行设置,设置要添加到备份文件的备份文件名

    set backupext=string

  4. TL; DR 使用persistent-undo。它提供了swapbackup的几乎所有功能,并提供了其他功能,例如backupswap文件选项未提供的细粒度撤消功能。

    <强>参考 1. ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf