最近发现vim 的代码片段插件 snipmate 和 snipmate-snipptes 停止更新了,实际上snipmate 停止维护已经有些日子了,维护 snimpmate 脚本的小组现在改为支持 ultisnips, 简单试了一下,确实强大,把基本功能整理一下。
主页地址
特点
支持自定义指定应用的片段类型
(比如一个文档可以同时指定应用 python和html 多种代码片段)支持插入 shell vimscript python 的运行结果
尤其是对于 python 的支持非常强大,提供了大量内置的对象,方便python 脚本当中调用
预定义的变量: fn - 当前文件名 path - 当前文件路径 t - 当前占位的值, t[1] is the text of ${1}, and so on snip - UltiSnips.TextObjects.SnippetUtil 对象,提供了方法、属性
- 支持占位符嵌套
# 嵌套的范例 snippet a $0 endsnippet
镜像引用(Mirrors)
自动复制占位的输入值
变换引用
类似镜像引用的功能,但是支持正则表达式进行替换输入值
支持对代码片段的应用环境进行限制
比如指定在行首展开、在单词内展开、在单词边界展开、在符合正则表达式的条件下展开等等
代码片段的扩展引用
比如在 cpp.snippets 文件的第一行增加一句 extends c ,在打开一个cpp 文件时,会首先查找搜索路径内的所有 c.snippets 文件,所以可以很容易复用已有的代码片段文件。
安装
我使用VAM来管理vim插件,所以安装起来非常方便,主页上也介绍了使用其他方法方便的安装。不过这个插件要求vim在编译时提供python支持(默认ubuntu下面提供的vim是带python选项的版本)
预定义的快捷键
展开代码片段
+ 展开代码片段列表进行挑选
+j 跳到下一个占位符位置
+k 跳到上一个占位符位置