安装
Ultisnips 插件安装分两部分,一个是 ultisnips 插件本身,另外一个是代码片段仓库。一般来说把默认的代码片段仓库下载下来按需修改后上传到自己的 github 即可。如果你和我一样也使用 vim-plug 来管理插件的话,添加下面的代码到你的 vimrc 中保存刷新即可
Plug 'SirVer/ultisnips'
" 你自己的代码仓库 git 地址
Plug 'keelii/vim-snippets'
上面的示例中所有的代码片段都存放在插件安装目录下面的 vim-snippets/UltiSnips
中,文件命名格式为 ft
.snippets, ft
就是 vim 中的 filetype
,其中有个 all.snippets
是唯一一个所有文件都适用的代码片段
配置
快捷键设置,我一般使用 tab 来触发代码片段补全,且不使用 YCM (官方文档表示使用YCM的话就不能使用tab补全)
let g:UltiSnipsExpandTrigger="<tab>"
" 使用 tab 切换下一个触发点,shit+tab 上一个触发点
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<S-tab>"
" 使用 UltiSnipsEdit 命令时垂直分割屏幕
let g:UltiSnipsEditSplit="vertical"
依赖
ultisnips 插件需要你的 vim 支持 python,可以在 vim 命令模式下使用下面的检测你的 vim 版本是否支持 python,返回 1 表示支持
:echo has("python")
:echo has("python3")
定义一个代码片段
定义格式
snippet 触发字符 ["代码片段说明" [参数]]
代码片段内容
endsnippet
最小化的一个代码片段
snippet if "if (condition) { ... }"
if (${
1:true}) {
$0
}
endsnippet
这时当你在 vim 中输入 if 敲 tab 就会展开一条 if 语句,第一个触发点是 if 条件表达式,最后一个是 if 语句体
${1:true}
表示这是第一个触发点,占位符为 true
,如果占位符没有默认值可直接使用 $1
, $2
, $3
…
可视选择区的内容为占位符
snippet if "if (...)"
if (