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;

posted @ 2017-07-21 10:48  Kconfig  阅读(313)  评论(0)    收藏  举报