Vim Snippet 设置

本人是 vim 用户,可以说能不用 IDE 就不用 IDE。

Snippet 是一种支持用户自定义补全的需求,在 vim 中,可以使用 UltiSnipsVim-Snippets 两个插件进行补全。UltiSnips 类似于一个替换引擎,本身是没有任何补全规则的,而 Vim-Snippets 则提供了各种各样的 snippets。

具体效果如下

安装方法很简单,在 ~/.vimrc 中加入

Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'

安装好之后,默认展开是 <tab> ,我们还可以使用let g:UltiSnipsExpandTrigger = key 来定义自己想要展开的键。

一些常用的展开:

incc => #include<iostream>
inc => #include<stdio.h>
cout => cout << ... << endl

UltiSnips同时还支持我们自定义代码块补全,方法也很简单。

Step1:

~/.vim/ 下创建一个文件夹为 UltiSnips 用来存放我们自定义的补全,创建一个文件名为 语言.snippets 的文件,这个语言即会在某个具体的语言生效。比如,需要创建一个用来补全 C 语言的文件,那文件名就是 c.snippets,创建一个用来补全 Cpp 的文件,那文件名就是 cpp.snippets

Step2:

语法规则:每一个展开规则都类似于如下的样式。

snippet 缩写 “描述” 设定
展开后的代码
endsnippet

例如,如果我想对 #define 进行缩写,想要达到的效果是输入def,即可自动展开。那么,应该如下编写

snippet def "define" b
#define
endsnippet

设定的选项有介绍以下几种:

  • b 这个关键词只有出现在行首的时候,才能被展开。
  • A 代表自动展开
  • i 表示可以护绿前后的字节,直接展开关键词。

查看更多的选项设置可以在 ultisnip 文档查看。

Step3

我们还可以设定一些,自动跳转和同步显示的高级玩法。

snippet for "for loop" b
for (int ${1:i} = $2; $1 < $3; $1++){
$4
}
endsnippet

效果显示如下:

这里面$1, $2, $3代表了不同的变量,按照变量顺序,我们可以实现在变量之间的自动跳转。

<c-j> 向后跳转, <c-k> 向前跳转。

Vim 自定义补全利器 Snippet的更多相关文章

  1. Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式

    1. 关于 Vim 补全模式    ---- Vim 一共提供了 15 种自动补全的模式(:help ins-completion).其中有两种的补全列表内容与另外两种相同,只是排序不同,这 15 种 ...

  2. Vim自动补全神器–YouCompleteMe

    YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...

  3. VIM自动补全插件 - YouCompleteMe--"大神级vim补全插件"

    VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe) ...

  4. vim代码补全-spf13,YouCompleteMe

    vim代码补全 现在的图形界面的IDE(Integrated Development Environment)一般具有语法高亮,语法检查,自动补全功能,大大提高了编程的效率. vim作为文本编辑器其强 ...

  5. vim自动补全

    Vim 中使用 OmniComplete 为 C/C++ 自动补全 OmniComplete 并不是插件的名字,而是 Vim 众多补全方式中的一种(全能补全).说白了 OmniComplete 其实就 ...

  6. Windows 10环境安装VIM代码补全插件YouCompleteMe

    Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...

  7. 【转】Vim自动补全插件----YouCompleteMe安装与配置

    原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assis ...

  8. Vim自动补全插件----YouCompleteMe安装与配置

    Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用 ...

  9. vim 自动补全 颜色设置

    vim 自动补全 颜色设置 hi Pmenu ctermfg=black ctermbg=gray guibg=# hi PmenuSel ctermfg= ctermbg= guibg=# guif ...

随机推荐

  1. Docker 网易镜像仓库使用

    Docker 网易镜像仓库使用: 网易账号注册: https://id.163yun.com/register?h=fc&referrer=https://console.163yun.com ...

  2. python获取全国各个城市pm2.5、臭氧等空气质量

    随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...

  3. Inkscape 旋转并复制

    画一个图形,点击图标. 然后图标中心有个十字叉, 然后把这个十字叉拖到你想要旋转的地方. 然后shift+ctrl+m打开变换菜单. 选择旋转选项卡,然后设置角度,点击应用.就可以旋转了,如果配合ct ...

  4. 在Mac上搭建带ssl协议和域名指向的Apache服务器

    顾名思义,就是要在苹果电脑上搭建 Apache 服务器,并且支持 https 协议,能用指定域名访问(有些开发调试需要注册域名,比如调试微信JS-SDK),当然最好能在手机端进行调试.首先,Mac 系 ...

  5. 数据的异构实战(一) 基于canal进行日志的订阅和转换

    什么是数据的异构处理.简单说就是为了满足我们业务的扩展性,将数据从某种特定的格式转换到新的数据格式中来. 为什么会有这种需求出现呢? 传统的企业中,主要都是将数据存储在了关系型数据库中,例如说MySQ ...

  6. Unicode 和 UTF-8 之间的关系

    一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个 ...

  7. C#中的等值判断1

    目录 简介 值类型和引用类型的相等比较 和相等比较相关的函数 string 和 System.Uri 的等值比较 泛型接口 IEquatable<T> 自定义比较方法 举例 总结 简介 最 ...

  8. Anrlr4 生成C++版本的语法解析器

    一. 写在前面 我最早是在2005年,首次在实际开发中实现语法解析器,当时调研了Yacc&Lex,觉得风格不是太好,关键当时yacc对多线程也支持的不太好,接着就又学习了Bison&F ...

  9. 算法学习之剑指offer(六)

    题目1 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. import java.util.*; public cl ...

  10. Msfvenom命令总结大全

    1.    –p (- -payload-options) 添加载荷payload. 载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填 ...