vim安装snipmate
在网上看了http://study.163.com/course/courseMain.htm?courseId=269016#/courseMain 里关于snipmate 的视频
snipmate 是一个类似代码补全的东西,更好的地方在于自定义这个补全的内容。
由于视频比较老了,所以很多地方跟现有的都有点小变化
这里主要说下安装问题
1、最新的snipmate 是在https://github.com/garbas/vim-snipmate 而不是在官网,官网很久没更新了
2、snipmate 的安装方式是 官方推荐的是 Pathogen安装方式,注意,这种安装方式你得首先安装https://github.com/tpope/vim-pathogen 才行
Pathogen的作用是在vim 下可以做bundle 目录,之后目录之下直接Git clone 相应的vim 插件,删除的时候,直接删除bundle 下插件的目录就可以了
Pathogen的安装方式为
mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim
之后编辑vim ~/.vimrc 首行增加这样一句话 execute pathogen#infect()
我这边的一个情况是。。。。raw.github.com 被墙了,所以 curl 这个命令不一定成功,你也可以手动编辑这个文件 vi ~/vim/autoload/pathogen.vim
源代码你可以自己在这里拷贝https://github.com/tpope/vim-pathogen/blob/master/autoload/pathogen.vim
之后就可以按照官方例子安装snipmate 了
% cd ~/.vim/bundle
% git clone https://github.com/tomtom/tlib_vim.git
% git clone https://github.com/MarcWeber/vim-addon-mw-utils.git
% git clone https://github.com/garbas/vim-snipmate.git
特别值得强调的是 新版的snipmate 已经不带任何snippet模板,需要自己去下载或者自己编辑,官方推荐的地址是
https://github.com/honza/vim-snippets
由于我们刚刚已经安装了Pathogen ,支持bundle 安装
所以我们可以直接cd ~/.vim/bundle/ u运行 git clone https://github.com/honza/vim-snippets 即可
之后重启vi 就可以享受snipmate 带来的便利了
注意,snipmate是通过后缀判断启用哪个snippet
这里最后留下个疑问 我看vim-snippets 里有yii 的snippet,但是我是PHP结尾的,怎么才能让snipmate 加载到这个snippet呢?
我查到是使用某个函数 但是 我觉得每次在vi 里输入 load XXX() 括号里还得接具体snipmate 的地址,非常麻烦 不知道有什么简单的方法。。。
---------------------------------------------------------- 分割线 -----------------------------------------------------------------------------------------------------
有个插件叫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;

浙公网安备 33010602011771号