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

引言

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

YouCompleteMe 到底是个什么玩意?有什么神奇的功能?下面我们就一起来看看,相信你也会为之心动的,下面图片截取自YouCompleteMe 项目主页

代码补全实现方法

(1)基于文本匹配

文本编辑器的代码补全,大多是利用正则表达式进行变量、函数名等信息的匹配,然后通过 ctags 这样的文件进行存储。在进行编辑时,再通过查询这些标签库,提供代码补全提示。这种方式易于实现,但是缺点是:编辑器并不理解程序代码的语法和语义,它只是按照规则进行“猜”,而且很多情况下还“猜”不出,更不可能检查代码中的错误。

(2)基于语义分析

而基于语义分析的编辑器,则可以读懂程序代码。基于语义分析,编辑器可以实时的编译源代码,建立起语法树,并分析语义,并给出代码补全提示。编辑器不再是不懂上下文意思的情况下乱”猜“了,而是有章可循。

YouCompleteMe 功能介绍

YouCompleteMe 依靠 Clan/LLVM 编译器进行前端实时编译,根据编译器信息提供非常准确的代码补全提示信息,而且还能提供友好的代码检查信息(这些都得归功于CLang/LLVM)。下面是一段 YouCompleteMe 作者的介绍:

YouCompleteMe 是一个快速、实时、模糊搜索的 Vim 代码补全引擎。YouCompleteMe 拥有几个不同的代码补全引擎,这些引擎为各种不同语言提供代码补全。例如:

基于Clang 的语义引擎为 C家族语言(C/C++/Objective-C/Objective-C++)提供本地代码补全;

基于 Jedi 的补全引擎为 Python 提供代码补全;

基于 OmniSharp 的补全引擎,为 C# 提供代码补全;

基于 Omnifunc 的代码补全器为许多其他语言(如PHP/Ruby等)提供代码补全。

附上一张使用截图:

YouCompleteMe 安装配置

YouCompleteMe 的安装配置稍微有点麻烦,但是子要按照项目主页上介绍的步骤一步一步来时没什么问题的,这里就不多说了。

参考:

[1] YouCompleteMe 项目主页  https://github.com/Valloric/YouCompleteMe

[2] Vim 自动补全神器——YouCompleteMehttp://jishu.zol.com.cn/228882.html

[3] Vim 中的杀手级插件——YouCompleteMe http://zuyunfei.com/2013/05/16/killer-plugin-of-vim-youcompleteme/

史上最强大的 Vim 代码补全引擎:YouCompleteMe,布布扣,bubuko.com

时间: 2024-10-13 20:51:50

史上最强大的 Vim 代码补全引擎:YouCompleteMe的相关文章

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自动补全神器–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

【转】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

一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势1.基于语义补全2.整合实现了多种插件 clang_complete.AutoComplPop .Supertab .neocomplcache .Syntastic(类似功能,仅仅针对c/c++/obj-c代码) 3.支持多种语言 c.c++.obj-c.c#.python 对于其他的语言,会调用vim设置的omnifunc来匹配,因此同样支持php,ruby等语言. 4.YouCompleteMe除了提供

vim自动补全插件YouCompleteMe

前言 Valloric/YouCompleteMe可以说是vim安装最复杂的插件之一,但是一旦装好,却又是非常好用的.YouCompleteMe简称ycm 在安装折腾的过程中,我再一次的体会到,除了官网教程,百度上的教程都是辣鸡,都是坑! 安装准备: 1.确保已经安装好build-essential 和 cmake .ycm是编译型补全插件,这两个工具是编译ycm用的. sudo apt-get install build-essential cmake 2.确保已经安装好了python-dev

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

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

vim--golang代码补全

我想说,我折腾了很久编辑器,试了九种办法 最后我只成功了一种 但我依然想就我混乱的逻辑做下整理 一.一开始,我试图入手ipad编码软件,大概9美金吧,叫Textastic.我试图用它的近亲来试验Textastic Mac Trial看看能否代码补全. 我安装了golang.tmbundle. 语法高亮和snips是有的.可惜没有补全. 二.我想,听说TextMate是Textastic Mac Trial的近亲,何不试试TextMate?于是下载安装 mkdir -p ~/Library/App

vim-一种简单易懂的django代码补全方式

既:Pydiction Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串. Pydiction主要由三个部分组成: python_pydiction.vim–该文件为 Vim 的 plugin 文件,实现 Python 文件的 TAB 补全功能 complete-dict–该文件为 Vim 的 dictionary 文件,其中包含 Python 关键字和模块结构等信息.是 plugin 进行