我很伤心我通过使用vim删除了错误的功能而没有提交SVN服务器在我编译之后我发现我犯了错误.我也通过vim'制作'文件.
现在我还没有关闭文件,它有.swp文件.我尝试使用'u'命令恢复删除但失败了.vim说这是最新的变化.感叹....无论如何,我可以恢复我的功能?
百万谢谢.
使Drasils指针更明确:
:undolist
Run Code Online (Sandbox Code Playgroud)
g- '回到过去'
g+ '及时前进'
Vim的7.3+有撤消"分支":这意味着它会保存状态的快照,即使线性的历史被覆盖(因此它通过简单的是不可达的u和)
有几种方法可以恢复由于崩溃或无意关闭程序而无意中丢失的文本。
使用持久撤消。持久撤消提供了第 2 点和第 3 点中交换/备份文件选项提供的几乎所有功能,以及一些其他选项,例如细粒度历史记录遍历。
A。放persistent-undo
:
把这个放在你的.vimrc
:
set undofile
set undodir=~/.vim/undodir
b. 创建撤消目录
mkdir ~/.vim/undodir
C。要撤消更改,请使用以下选项之一
1) g+
在正常模式下历史前进
2) g-
在正常模式下回溯历史
3)。 :earlier 20s
回到 20 秒前或earlier 10m
时间倒退 10 分钟等
4) :later 20s
时间向前推进 20 秒或later 10m
时间前进10分钟等
5)。使用:undolist
获取撤消更改的列表
d. 要获得撤消分支的可视化效果,您可以使用以下插件gundo.vim
: http: //bitbucket.org/sjl/gundo.vim/来可视化分支
使用备份文件
A。在你的.vimrc
set backup
b. 通过将其放入您的目录中来设置备份目录.vimrc
set backupdir=~/tmp/
C。设置要添加到备份文件中的备份文件名,方法是在您的.vimrc
set backupext=string
使用交换文件
A。在你的.vimrc
set swapfile
b. 通过将其放入您的.vimrc
. 这可能不是一个好主意,因为它会阻止您拥有两个同名的文件,或者导致交换文件名发生冲突。
set directory=~/tmp/
更好的选择是提供多个路径,因此如果 vim 遇到冲突,它可以将其保存到可以写入的目录中
set directory=,~/tmp/
在这种情况下,它将尝试将交换文件写入当前目录。如果不能,那么它将尝试将其写入~/tmp
目录
C。设置要添加到备份文件中的备份文件名,方法是在您的.vimrc
set backupext=string
TL;DR使用persistent-undo
。swap
它提供了和的几乎所有功能,并提供了和backup
不提供的附加功能,例如粒度撤消backup
swap
文件选项不提供的粒度撤消。
参考文献 1. ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf