Hacking Vim: UltiSnips(07)

摘要

本文介绍的是号称代码片段终极解决方案的 —— UltiSnips, 这个补全引擎非常快,而且有非常惊艳的表现,需要配合 vim-snippets 一起使用.

简介

UltiSnipsVim 提供了代码片段管理功能, 可以快速将大量冗余、繁琐的代码片段插入到代码中. 其中 UltiSnips 是补全引擎,真正的补全模板在 vim-snippets, 请看下面的 Demo:

demo

安装

Note: 请确保已经正确安装了 Pathogen 插件,如果没有安装,请参考 Hacking Vim: 插件管理器Pathogen(02)

本篇文章的代码在 https://github.com/NsLib/blog-vim-proj/tree/ultisnips

git clone https://github.com/SirVer/ultisnips --depth=1
git clone git@github.com:honza/vim-snippets.git --depth=1
rm -rf ~/.vim/bundle/ultisnips/.git
rm -rf ~/.vim/bundle/vim-snippets/.git

配置

autocmd FileType * call UltiSnips#FileTypeChanged()
" 连续按下两次i触发代码补全
let g:UltiSnipsExpandTrigger="ii"

自定义代码片段

代码片段维护在 vim-snippets 项目里面,我们切换到 ~/.vim/bundle/vim-snippets/, 其内容如下:

.
├── UltiSnips
├── autoload
├── plugin
├── pythonx
└── snippets

5 directories

这里我们只需要关注其中的 UltiSnipssnippets 这两个文件夹,snippets 这里面是 snipMate 格式的补全代码,不推荐使用,新入坑的同学应该始终选择 UltiSnips 格式,因为其更灵活.

我们来看看 ~/.vim/bundle/vim-snippets/UltiSnips 中的内容:

.
├── README
├── all.snippets
├── bib.snippets
├── bindzone.snippets
├── c.snippets
├── 这里省略一些语言类型
├── vim.snippets
├── xhtml.snippets
├── xml.snippets
└── zsh.snippets

0 directories, 56 files

这个文件夹下使用使用语言类型加 .snippets 来定义对应语言的代码片段,这里以 C语言 为例,我们打开 c.snippets,以一个实例来简要说明,这里只是最基础的简介,因为规则非常简单,有编程基础的同学参考官方自带的例子可以很容易理解的:

snippet ife "这里是代码片段的描述"
if (${1:/* 默认显示的内容 */}) {
    ${2:/* stat */}
} else {
    ${3}
}
${0:/* 占位符0最后才会切换到 */}
endsnippet

下面是一些规则:

  • 代码片段以 snippets 代码片段触发的缩写 "代码片段描述" 开始,以 endsnippet 结束
  • ${x} 定义了跳转点,使用 <c-j><c-k> 进行切换(请参看我的配置文件)
  • ${0} 比较特殊,它实际上是最后一个跳转点,而不是第一个
  • ${x:statement} 其中的 statement 可以替换成默认显示的文本.

请结合我的演示来理解:

custom-demo

结语

这个插件我用的比较基础,这里只介绍最基础的东西,想深入细节的同学 RTFM 吧, XD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值