Vim(gvim)在recover时支持diff–recover.vim插件推荐
Published on 十一月 2, 2010
很久没有写vim相关的文章,愧对vimer.cn这个域名呀~~哈,不过我还是尽量保持经常给大家提供一些Vim相关的知识。
这次介绍的是 recover.vim (http://www.vim.org/scripts/script.php?script_id=3068)
先简单介绍一下背景,vim有自动生成swp文件的功能,能够在异常情况下(简单来说就是你的vim进程被强制终止)将你没有来得及保存的代码存储下来。
但这仍然有个问题,当你再次打开那个文件的时候,vim仅提示你是否要恢复,但是我们并不知道会被恢复成什么样子。。
recover.vim就是为了解决这个问题。
我们直接来做个演示可能会比较明确,以windows下的gvim7.3为例。
新建一个文件 1.cpp,写入如下数据但是不保存
1 2 3 4 5 6 7 8 9 10 | #include <iostream> #include <string> #include <vector> #include <map> using namespace std; int main(int argc, const char *argv[]) { return 0; } |
打开任务管理器,kill掉gvim进程,我们会发现多了一个1.cpp.swp文件。
重新打开1.cpp,提示如下:
选择是,之后界面如下:
鼠标落在右边窗口,执行:diffput 之后界面如下:
执行:FinishRecovery,结束恢复过程,1.cpp.swp也会被删除。
------------------------------------------------------------------
另:
博友依云提出本插件缺少一个直接删除的选项,因此修改插件如下,有需要的朋友可以下载:(修改了autoload/recover.vim)
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=1705
最近刚开始学VIM,感谢博主提供的优秀教程
[回复]
回复没显示?刚刚看到一个插件zencoding,强烈推荐
[回复]
Dante 回复:
十一月 3rd, 2010 at 9:40 上午
zencoding,哈,确实不错,只是写HTML的机会还是比较少,所以一直没有用起来~~
[回复]
Dante 回复:
十一月 3rd, 2010 at 9:42 上午
呃,wordpress的过滤系统又傻掉了。。现在我每天都要去垃圾评论里面把评论取回来。。。
[回复]
终于又等到一篇vim文章. 呵呵
[回复]
Dante 回复:
十一月 3rd, 2010 at 9:40 上午
哈,确实好久没写了~
[回复]
vimer.cn这个域名的确很酷,其实你可以考虑让别人投稿,这样可以更好发挥这个域名的作用
[回复]
Dante 回复:
十一月 3rd, 2010 at 9:39 上午
这个建议我确实也考虑过,主要还是要看读者们想看什么,我专门写篇日志给大家投票吧。
[回复]
不够完美啊,如果没有修改的话直接删除交换文件就可以了嘛。另外附上我对其选项的修改:
diff –git a/autoload/recover.vim b/autoload/recover.vim
— a/autoload/recover.vim
+++ b/autoload/recover.vim
@@ -40,12 +40,14 @@ endfu
fu! recover#ConfirmSwapDiff() “{{{1
call inputsave()
- let p = confirm(“Swap File found: Diff buffer? “, “&Yes\n&No”)
+ let p = confirm(“Swap File found: Diff buffer? “, “&Yes\n&No\n&Delete”, 2)
call inputrestore()
if p == 1
let v:swapchoice=’r’
let b:swapname=v:swapname
call recover#AutoCmdBRP(1)
+ elseif p == 3
+ let v:swapchoice=’d’
endif
endfun
[回复]
依云 回复:
十一月 3rd, 2010 at 10:25 上午
啊~缩进全没了。。。
[回复]
Dante 回复:
十一月 3rd, 2010 at 11:03 上午
哈,依云能把修改后的插件邮件发给我不?我补充到文章里去~~
[回复]
依云 回复:
十一月 3rd, 2010 at 11:28 上午
已发。其实就改了上面那三行,改改缩进就可以patch的。
[回复]
如此好贴,咱能不顶!!
[回复]
Dante 回复:
十一月 10th, 2010 at 9:29 下午
哈,多谢多谢~
[回复]
博主我是一个vim新手,最近看了你的教程,成功为自己搭建了一个IDE,不过我在写Qt程序的时候,使用全能补全,不过我发现我打进左括号的时候,gvim响应特别慢,如果我打错了函数名字,gvim有时就直接死机了。
比如
dialog->accept( //补全不是很慢,但是打入左括号就要停那么5、6秒
func( //没有这个函数,直接死机了。
tags我产生的是110MB(吓了一跳,不过网上有人说只有18M),博主有办法解决么?
我关于tags的设置就是三条:
set tags+=F:\DevelopmentTools\Vim\cpp_src\tags
set tags+=D:\Qt\2010.04\qt\include\tags
set tags+=D:\Qt\2010.04\qt\src\tags
还有两个设置
set completeopt=menuone
let OmniCpp_ShowPrototypeInAbbr = 1
vimrc其他都是在各个网址(现在主要是博主的)直接copy下来的,似乎没有和这个相关的。
[回复]
Dante 回复:
十一月 26th, 2010 at 10:12 上午
tags太大的话,搜索就会比较慢。
是不是开启了showfunc.vim这个插件?实时性带来的代价就是速度变慢,可以把这个插件删掉试试看。
[回复]
天下懒鬼 回复:
十一月 26th, 2010 at 12:39 下午
谢谢博主,我把那个插件删除掉了,结果左边括号的问题就解决了,看来就是这个问题。
[回复]
你好,最近使用vim,不知道按错什么键了,反正保存的时候提示readonly选项被开启;
然后set noreadonly
又冒出一个 read-only被开启,还是要求加!强制执行,但是用set查看,也没看到什么read-only选项啊
能告诉我怎么回事么 ? 谢谢
[回复]