Vim的YCM(YouCompleteMe)插件配置

最后结果和文件在

  http://gist.github.com/zhuzhenpeng/5939304c8f298c82352b

GCC、Clang、llvm概念和关系

  编译器分前端和后端

  前端主要进行语法和语义分析,输入是源代码,输出是一棵抽象的语法树,平时大家说的parser就是指编译器的前端

  后端主要优化中间代码和生成机器代码,输入是前端产出的语法树,输出是机器代码,Optimizer和Code generator 就是指后端

  GCC既包含前前端和后端,clang是前端,llvm是后端。人们使用他们的组合是(前端 / 后端):

  gcc / gcc

  gcc / llvm

  clang / llvm

  clang / llvm是苹果公司在推动的。

  clang提供了很强大的语义分析能力。

  

YouCompleteMe

  老外写的一个很好用的代码补全工具,原理是利用C/S架构,编辑器作为客户端,后台反馈补全信息,而这些补全信息就是利用clang工具来获得的。

  http://github.com/Valloric/YouCompleteMe

  据说也可以用在emacs上,emacs本身就缺乏c++11的语法高亮,而补全工具目前除了rtags有涉及c++11其它好像都不尽人意,YCM应该十分不错(我没试)

  http://github.com/Valloric/ycmd,这是服务端的项目

Vim安装和配置YCM

  老外在github上说的安装步骤十分清楚了

  在ubuntu下,我也是利用Vundle,在里面加一句 Plugin ‘Valloric/YouCompleteMe‘ 让它一直下(过程有点久,一直显示processing XXX)

  直到undle提示我要编译,这时候去到目录下执行

  ./install.sh --clang-completer

  就可以了

  配置 .ycm_extra_conf.py 文件

  这个文件的配置是我写这篇文章的主要目的。

  官方给出的demo地址是 http://github.com/Valloric/ycmd/blob/master/cpp/ycm/.ycm_extra_conf.py

  首先说下.ycm_extra_cong.py的作用,一般而言每个项目都需要有一个相应这个文件放在根目录,每当用vim打开项目的项目中的源代码时,ycmd服务器就会从源代码所在目录一直向上搜索直到找到这个.ycm_extra_cong.py文件,然后根据这个文件来获取这个源代码所需要的补全信息。

  所以这份文件关键是告诉ycmd服务器用到的那些头文件的所在位置;比如如果是qt项目,就可以把相应的文件告诉ycmd,否则平时就不会进行qt代码的提示。

  

  根据官方的说法,我们主要修改falgs就可以了。在falgs中,我们看到-I(大写i)和-isystem,根据gcc的man中的说法:

   -I dir
  Add the directory dir to the list of directories to be searched forheader files. Directories named by -I are searched before the standard system include directories.

  -isystem dir
  Search dir for header files, after all directories specified by -I but before the standard system directories.Mark it as a system directory, so that it gets the same special treatment as is applied to the standard system directories.

  所以我们把自己项目中的头文件所在的文件夹放在-I 后面,而把c++的库的头文件、qt的库的头文件放在-isystem后面

  在网上的一些教程中,有的说把默认配置文件写入.vimrc中

  ~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py

  至少现在看来是错的,目前这个YCM项目中的文件夹已经改变了不少,里面原本的文件夹已经变了位置甚至已经没有了

  另一些教程中,很多人直接引用了这位老兄的配置文件

  http://gist.github.com/locojay/4950253

  有的人可能成功了但是不知所以然,有的人以为成功了但是实际没有(大部分情况下没有提示)

libc++-dev

  实际上,我们需要c++的补充,最重要的是找齐c++的头文件所在的位置,并把它放在-isystem中

  以我目前的机子为例,在ubuntu下,翻到/usr/include/c++/4.8/的目录下,看到有名为vector的文件,打开看到的内容是

  。。。

  #include <bits/stl_vector.h>

  。。。

  可以看到vector的声明是放在stl_vector.h文件中的,我尝试过把 /usr/include/c++/4.8/ 和它的全部子文件夹 添加到flags中但是没有效果,使用时显示没有vector的定义,我也不知道是不是因为名字的原因

  后来我的解决方法是

  sudo apt-get install libc++-dev

  这个libc++-dev是新的基于11的对c++标准库的实现,是llvm c++ standard library development files

  安装以后可以看到 /usr/include/c++/v1 文件夹放了全部的头文件,此时把它放入配置文件中就大功告成了,所有补全都有了提示。

  可以把这个基本的只包含基本库的配置文件设为全局的,这样的话就不必再为临时编写c++文件而配置了: 

  let g:ycm_global_ycm_extra_conf = ‘your/path/to/.ycm_extra_cong.py‘

  可以发现/usr/include/c++/v1 和网上的那个 /usr/lib/c++/v1 配置很像,但是如今头文件已经放在别处,我机子上是没有那个文件夹的。所以稍微理解下原理还是有必要的,以后只要找到

时间: 2024-11-06 07:07:13

Vim的YCM(YouCompleteMe)插件配置的相关文章

vim学习、各类插件配置与安装

vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在vimtutor之后再进行观看 查看vim自带的简易版本学习教程vimtutor,ubuntu可以直接通过shell命令行下输入: vimtutor //vimtutor is a application and is started by calling its name vimtutor有在线版本(chr

【vim环境配置】解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题

背景: 由于不可抗拒的原因,学习环境由之前centos的一台机器上,变成了ubuntu的一台机器上.因此,需要在新的ubuntu的机器上再配置一次vim环境.算起来这已经是第三次配置vim环境了(mac上配过一次,centos上配过一次,ubuntu上再配置一次).这次配置大体上比较顺利,还是沿用之前日志用的方法(http://www.cnblogs.com/xbf9xbf/p/4860484.html),用pathogen管理插件:而且这次ubuntu机器能联网,比之前在centos上无网的情

vim启用自带插件配置

linux系统目录/usr/share/vim/vim74/autoload下列出vim安装完成后自带的一些插件,如果需要启用这些插件需要在~/.vimrc中进行配置,比如:配置python插件启用, 必须保证编译安装 VIM 的时候启用了 Python 特性, 即./configure --with-features=huge --enable-pythoninterp=yes,因为,pythoncomplete.vim 是用 python 写的..vimrc文件中添加 filetype pl

【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

原文网址:http://www.cnblogs.com/csuftzzk/p/3435710.html 序言 使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度.这次,又在网上闲逛着,发现了一个个人博客提到了Vim代码补全这回事,并提到了YouCompleteMe这个插件.顿时激起了我折腾的欲望.以前我都是使用Ctags+<C-n>或<C-p>来进行补全,然而其命中率却比较低,有时候根本就乱匹配.于是决定将YouCompleteMe这个插件安

vim下使用YouCompleteMe实现代码提示、补全以及跳转设置

配置YouCompleteMe 1. 安装vundle vundle是一个管理vim插件的工具,使用vundle安装YouCompleteMe比较方便. 按照作者在https://github.com/gmarik/Vundle.vim#about提供的方法安装好vundle.(主要是下载解压,病略微修改 .vimrc) 2. 使用vundle安装YouCompleteMe 主要根据作者自己的建议整理 https://github.com/Valloric/YouCompleteMe 在.vim

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 公司搜索

manjaro下vim配置和YouCompleteMe插件的安装

manjaro下vim配置和YouCompleteMe插件的安装 前言 我Garen Wang就是饿死,死外边,从下面跳上去,也不会卸载掉ubuntu玩别的distribution!!! 真香 ubuntu因为字体出锅,外加知乎里面好多人在吹manjaro,我就来安装玩一玩. vim的安装 arch系网上找不到什么系统的人工编译安装vim的方法,所以我干脆就不自己弄了,直接pacman搞一搞就是了. $ sudo pacman -S vim gvim 两个东西一起安装下去就有一个比较齐全的vim

Ubuntu16.04 为vim安装YouCompleteMe插件

安装这个插件因为一些错误的操作费了不少时间,把过程记录下,以后需要安装时避免浪费时间. 一些准备工作: 1.首先安装vim: 1 sudo apt-get install vim-gtk 2.安装完成后,查看vim对python的支持 1 vim --version | grep python 发现是有对Python3的支持而没有对Python2的支持. 如果需要换成对python2的支持的话,可以安装py2包: 1 sudo apt-get install vim-nox-py2 安装完成后,