有个插件叫code_complete,也很不错,本来我基本上打算用它了,可是有个小问题折腾很久也没搞定:给main加一个return 0;
后来我看到有个经验丰富的资深VIM用户说他最早接触的是code_complete,然后又换了一个什么插件,最后遇到snipmate,说有相见恨晚的感觉,因为那个时候他已经为了customize前两个插件写了上千行代码,他说他再也不必找其他类似功能的插件了——可见,这是个杀手级插件!
然后我就试了一下snipmate,果然超赞,它默认的风格就是我喜欢的那种(我之前还调整了code_complete的风格),而且main默认的就是包含return 0;就是如此的合我心意!而且你想修改它来满足自己的喜好也变得非常容易,只需要改snippets文件夹下的相应文件,如cpp.snippets,比code_complete要容易得多(code_complete是混在一起,因此在设计上,snipmate也是更胜一筹)。另外,snipmate支持多种语言C/CPP/JAVA/Ruby/Python/perl/php/tex/html/Javascript/objc/sh/zsh……几乎能想到的都覆盖了,而code_complete似乎只是为C/C++设计的
我的VIM经验是:不要只去看,去试一下,不用担心有什么副作用,只要你记住你干了些什么,就完全可以恢复回去(比如把.vimrc里添加的东西注释掉,把放到.vim文件夹下的再删掉),而且通常情况是:你所做的设置,无论是看来的还是听来的,通常只会让你更好受而不是更难受。另外,不要觉得可能你不需要这个功能,试一下才能知道需不需要(我很早以前就看到网上有人用code_complete,还看了那个demo的动画,但我觉得我不需要,不过今天用了一下,觉得太cool了,太好了,正是我需要的,离不开了。当然,后来我改变想法了,因为又看到了snipmate)
我把code_complete的演示动画放在这里,注意:这是code_complete,至于snipmate,很相似,但更好
安装
下载snipmate:http://www.vim.org/scripts/script.php?script_id=2540
如果连不上那个网站(我现在就是),可以从这里下载:http://pan.baidu.com/share/link?shareid=161279&uk=1292515846
版本是0.83,目前是最新版本
我的系统是ubuntu11.10,主文件夹下有个.vim的隐藏文件夹,cp压缩文件到该文件夹下,解压缩(对同名文件夹会合并,同名文件会询问是否覆盖或重命名,所以不必担心文件被覆盖),这样就OK了
使用
这个插件只用了一个键,就是TAB键,比如对一个C/C++文件,输入inc,再按TAB键,就会填充为#include <stdio.h>,同时stdio被选中,以备修改。还有其他的,如main+TAB, wh+TAB,do+TAB,for+TAB,forr+TAB,if+TAB……具体可以看snippets文件夹下的那些文件,比如c.snippets
--
一些我个人使用的snippets
c.snippets
snippet sc
scanf("${1:%s}\n"${2});${3}
snippet re
return ${1:0};${2}
snippet elif
else if (${1}) {
${2:/* code */}
}
cpp.snippets
snippet us
using namespace std;