近期重拾Vim,编译部署来补全插件YCM,这个插件的补全效果和在写C代码的时候的自己主动提示错误信息等还是十分棒的,写点心得下来,也算给自己做个备忘。

高速安装

首先參考我的.vimrc配置,用Vundle安装好之后,进入YCM的目录.vim/bundle/YouCompleteMe会找到install.sh脚本文件。这个时候假设你须要C语言系的语义补全你须要在执行install.sh脚本之后手动增加命令--clang-completer,就可以进行自己主动安装,此时YCM会去Clang的官网去下载libclang.so来作为YCM语义补全的支持。

完整安装:

1.假设採用之前的方法不能进行安装的话能够进行自己的定制化安装,YCM是一个编译插件,因此须要进行手动编译。首先第一点就要确保你的Vim的最低版本号必须是7.3.584,而且支持python2。假设不支持,你必须自己手动编译一份Vim。(查看是否支持python2能够在Vim中输入:echo has('python')假设输出1就表示支持,0就表示这个时候你须要又一次编译了)

2.下载libclang.so,YCM作者推荐下载官方预编译 之后的libclang.so而不是用你系统自带的libclang,假设你真的要用自己的sysytem中的libclang须要保证版本大于等于3.3,否则会出现随机性的错误。

3.编译ycm_support_libs库。首先确保自己安装了python-dev有python的头文件,然后建立暂时目录ycm_build

cd ~
mkdir ycm_build
cd ycm_build
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

用CMake完毕了生成Makefile的过程,注意这个过程是给那些不须要C语义补全的同学,假设你须要C的语义补全,步骤会略微麻烦点。你须要自己下载二进制发行版的LLVM+Clang或者自己手动编译LLVM和Clang,然后保证bin,lib,inclulde在文件夹根文件夹下比方ycm_temp/llvm_clang下,然后执行

cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

等待Makefile生成之后执行

make ycm_support_libs

即完毕了ycm_supprot_libs的编译,对于那些想用系统libclang的同学你须要传入-DUSE_SYSTEM_LIBCLANG=ON来替代-DPATH_TO_LLVM_ROOT的flag.假设你系统内有自己定义的libclang你也能够定义採用自己定义的libclang,-DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so.同一时候须要注意的是,假设你採用了Clang的语义补全支持,make命令也会把libclang复制一份放到YouCompleteMe/python以下来驱动YCM的执行。

使用:

    完毕了YCM的编译就能够享受它给你带来的方便了,假设你须要C语言的语义补全,除了刚刚编译多出来的步骤之外,你还须要提供编译的flag给YCM才干进行真正的补全。YCM查找.ycm_extra_conf.py来进行补全支持,你也能够手动提供一个全局的.ycm_extra_conf.py路径来给YCM做缺省处理(YCM查找路径是依次从里到外的向上,假设找不到会採取默认的全局路径,我选择放在主文件夹以下,这样不须要设置全局路径,由于YCM始终能够找到它)。

此外说一下.ycm_extra_conf.py,对于一些简单的小项目,使用默认的文件就可以,对于默认文件我选择关闭了-Werror由于这样会给Vim提示语义准确的Syntastic带来困扰,另外我多加了一句-isystem,/usr/include/c++/4.8,由于我发现默认的ycm_extra_conf似乎找不到C++头文件。对于复杂项目来说,这个时候又须要借用我们强大的CMake了。CMake中有一个命令能够导出编译flag,-DCMAKE_EXPORT_COMPILE_COMMANDS=ON,这个时候CMake会把当前的编译flag所有导出到一个json数据库-compilation_commands.json,之后 我们须要手动给ycm_extra_conf.py中的compilation_database_folder一行 加入你数据库的位置,比方你在src,ycm_ectra_conf在你文件夹下,而你的json在build中,所以你须要写floder=./build,这个时候打开Vim,你会发现你的项目已经能够进行补全,我在进行Qt开发的过程中就是将CMake脚本维护好之后通过json来让YCM找到Qt的头文件从而进行补全,十分方便。

总结:都说Vim最强大的乐趣在于自由定制,我感觉从Vim定制的过程中也能够学习到非常多东西,也会这就是定制给我带来的真正乐趣,迫使我去学习,迫使我去尝试各种情况。我相信喜欢Vim定制的人不在少数,此文就当抛砖引玉,希望我的这篇文章能够帮助到你,同一时候也希望志同道合的朋友能够留下你的脚印,毕竟有你们的支持才干让我更有写作的动力。

跟我一起学Vim补全神级插件--YouCompleteMe相关推荐

  1. php vim 补全,Vim 不使用 tags 文件补全 PHP 代码

    小朋友们大家好,还记得我是谁吗?对了!我就是爱折腾 VIM 的 vimer.今天要给大家讲一个 Vim 下代码补全的新故事. 记得前不久,我还给大家介绍过使用 ctags + Vim 来实现代码补全和 ...

  2. vscode自动加前缀_详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

    1.在vscode中搜索Autoprofixer 2.在安装完成之后要配置 在需要添加前缀的css文件上,右键点击命令面板,输入Autoprefixer CSS就好啦 ps: 如果想要兼容性最好的话, ...

  3. Chrome居然是学术利器?一口气推荐15个神级插件赋能科研之路

    关注"心仪脑"查看更多脑科学知识的分享. 关键词:chrome.学术利器.神级插件 1. 科研学术利器(推荐等级最高5颗星) EndNote Click (原Kopernio) ★ ...

  4. ps抠头发插件_「福利」PS抠图神级插件——VertusFluid Mask

    有小伙伴跟我咨询一些摄影技巧,摄影后期,旅游攻略等方面的问题,以前都是谁问我我回答一次,后来发现同一个问题不止一个人问,所以就建个群! 粉丝群:QQ群:212183200 微信群请点击微信公众号:鸟看 ...

  5. 一款语文老师写的word办公神级插件

    没错,正如题所说,这是一款语文老师开发的word办公神级插件----不坑盒子,小编体验了一下还真是太强大了! 双击exe文件,选择任意安装目录即可开始安装 如果你的电脑缺少运行库,软件会自动帮你下载安 ...

  6. 神级插件Bito介绍及使用

    还在用其他AI?不是说它不火了,而是你基本上很难访问了.这里介绍个便宜且免费的AI聊天插件,一样可以很棒.永久免费且不限制次数,有这好事?且听下文分解. 前言 虽然GPT 是用不了,推荐下国内的一些大 ...

  7. vim补全html标签,vim括号引号html标签自动补全

    (我现在已经不用下面方法了,可使用 xptemplate插件 http://blog.csdn.net/zcube/article/details/42525973) 问题:怎样在vim中实现花括号引 ...

  8. VisualStudio神级插件Resharper技巧基础入门到骨灰玩家使用全教程+Resharper性能优化

    我相信很多做.NET开发的童鞋应该都装了Resharper这个重量级插件,但在我的印象里很多人也就只用到了他的一些基本功能,可能算是大材小用了吧,某天,在跟一同事进行结对编程的时候,看到同事也安装了R ...

  9. Idea代码自动补全,良心插件推荐:Codota,再也不用担心写不出代码了。

    这款插件就是 Codota.基于AI技术,通过对大量开源的项目学习,帮助开发者提供更可靠的智能推荐,让编程变得更easy! 官网:https://www.codota.com 看官方发现,目前支持的语 ...

  10. VS Code写Python智能提示,代码自动补全(Kite插件)

    之前写python代码一直用的是VS Code,但是这款免费的IDE并没有针对python的智能提示,搜索了一些插件后发现智能提示也不好用,远没有Visual Studio之类写C++时的提示好用. ...

最新文章

  1. 强力攻城狮的职位要求...
  2. python教程:__file__、__name__、__dict__三个方法的作用
  3. Android游戏开发基础part3--Paint 画笔
  4. Java中stringbutter_java中string与ButterString的区别
  5. postman启动没反应_电脑主机开机但显示器没反应?检查这4个地方,2分钟内找出问题...
  6. 自建服务器调试,Mac简单实现服务器搭建(本地)与iOS调试
  7. ATEN瞄准专业级影音市场,发表全新VanCryst™视频系列产品线
  8. UVA 10733 - The Colored Cubes(Ploya)
  9. 股票历史数据-股票历史数据查询
  10. IDEA初始jsp模板和修改jsp模板
  11. 软件质量管理体系 type:pdf_广河iso14001环境管理体系各种荣誉资质 - 广河商业服务...
  12. 第3关:HTML表格:日常消费账单表格展示网页
  13. vue在日历中使用 tippyjs 来做悬浮弹框自定义插入html
  14. 1.26赛尔号服务器维护时间,赛尔号稀有精灵出现时间大全(完全版)
  15. 登录公司邮箱服务器怎么选,企业邮箱怎么选
  16. 用opencv将左右眼视角图片转换为红蓝3D图片
  17. Dubbo-接口数据序列化Serialization
  18. safari打开图片链接显示问题
  19. Win11包含APPX驱动重装及备份教
  20. Callbacks API-EarlyStopping

热门文章

  1. matlab 中函数regionprops 求解区域面积的原理
  2. Macbook 本机 apache 虚拟主机和网站,多域名、多虚拟目录,并且允许列举所有文件和目录
  3. 【Flutter】Dart的数据类型listMap(数组和字典)
  4. iOS11 tableview左滑到底禁用删除
  5. java 企业 网站源码 后台 springmvc SSM 前台 静态化 代码生成器
  6. 想要做好SEO优化,你必须懂得SEO的核心因素
  7. linux内核内存分配(三、虚拟内存管理)
  8. Javascript本地存储小结
  9. TCP 协议学习小结
  10. 21个最佳jQuery插件推荐