Vim 自定义补全利器 Snippet

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> 向前跳转。

原文地址:https://www.cnblogs.com/wAther/p/10444045.html

时间: 2024-10-08 18:19:27

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

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

Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于Python环境:必须确保环境变量Path里只有一个python.exe. ycmd是client-server架构.ycmd本身是server,可以为多种客户端所用,如VIM/YouComplete,emacs/emacs-ycmd等.服务端有不同引擎,如clang补全c-familiy语言,其他引

vim c++补全

弄了个vim对c++的补全,主要参考自: http://vim.wikia.com/wiki/C%2B%2B_code_completion 首先确定vim编辑.cc或者.cpp文件时当前自动补全函数,在命令模式下输入 :set omnifunc? 如果得到的结果为:omnifunc=ccomplete#Complete,说明有必要进行以下的操作以实现针对c++的自动补全 1 首先安装OmniCppComplete,参见: http://www.vim.org/scripts/script.ph

史上最强大的 Vim 代码补全引擎:YouCompleteMe

引言 自己之前Vim的代码补全插件都是使用 ctags + autotag + taglist + omnicppcompele 的组合,而且很多时候都没有提示或提示补全,而且每次打开一个新文件文件都需要创建一个 ctag 标签库,代码补全才能正能工作,十分的繁琐蛋疼.当时我就在想,既然源代码都有了,难道就没有一个 Vim 插件能的通过已有的源代码,实时构建语法书来提供代码补全提示吗?通过一番搜索,终于发现了她--YouCompleteMe,看了介绍,我开始迫不及待的试用了,顿时感觉从小米加步枪

Vim自动补全神器–YouCompleteMe

YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE一样的工作,文本自动补全(ie.acp,omnicppcompleter),代码检查(Syntastic)等等工作. 针对文本自动补全这个功能来说,主要有两种实现方式. 基于文本 我们常用的omnicppcompleter,acp,vim自带的c-x, c-n的实现方式就是基于文本.更通俗的说法,其

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

Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用的是neocomplcache+code_complete+omnicppcomplete,但效果还是不是很好.看到有YCM后前面的插件可以说拜拜了. YouCompleteMe:一个随键而全的.支持模糊搜索的.高速补全的插件.YCM 由 google 公司搜索项目组的软件工程师 Strahinja

python vim自动补全

1.下载插件包 https://github.com/vim-scripts/Pydiction ##################### 包括三个文件 python_pydiction.vim #vim插件 complete-dict #python关键字和模块列表, pydiction.py  #python脚本,可以添加更多的模块 2.配置 #1.查看家目录下是否有.vim目录,若没有则创建. mkdir  -p  ~/.vim/after/ftplugin/pydiction #2.把

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

原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用的是neocomplcache+code_complete+omnicppcomplete,但效果还是不是很好.看到有YCM后前面的插件可以说拜拜了. YouCompleteMe:一个随键而全的.支持模糊搜索的.高速补全的插件.YCM 由 google 公司搜索

VIM自动补全插件 - YouCompleteMe--&quot;大神级vim补全插件&quot;

VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe), 使用VIM的用户也多半感觉 IDE开发工具不够轻便,且IDE往往只支持特定的几种语言或者特定系统平台,多数人用来用去,还是觉得VIM最顺手,用起来最舒心. 下面这个VIM的自动补全插件——YouCompleteMe,为我们弥补了vim不能自动补全的缺憾.YCM不仅仅对C族语言的支持非常好,而且它

Archlinux YouCompleteMe vim自动补全插件

Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 参考: https://github.com/Valloric/YouCompleteMe https://github.com/gmarik/Vundle.vim http://www.cnblogs.com/zhongcq/p/3630047.html 1.用vundle下载YouCompleteMe和syntastic 2.pacman -S clang (编译会得到/usr/lib/libclang.so)