vim自动补全插件YouCompleteMe(YCM)安装过程解析
作者:思念殇千寻 时间:2023-02-11 11:33:26
Vim是全平台上一个高度可拓展的编辑器。它本身只是一个简陋的编辑器,但是因为有各种插件而变得强大。使用Vim编写代码就不免遇到代码补全的问题。常用的代码补全插件有两个:日本人shougo写的neocomplete和前Google工程师Valloric写的YouCompleteMe。用的人比较多的还是YouCompleteMe。YouCompleteMe被称为Vim最难配置的插件,当初配置好YouCompleteMe也是费了九牛二虎之力,印象中是花了整整一个晚上。回报也是显然的,支持定义跳转,变量跳转,超快的自动补全。下面进入正题。
首先是自动补全的机制,在我的理解里自动补全的实现是通过一个server来实现的。在YouCompleteMe里,server就是python。所以当你打开Vim,plug YCM,你可以在进程列表里发现一个python进程,这个进程其实就是扮演了server的角色。当你编辑代码时,server在文件目录里寻找关联的文件,对全文进行处理。然后用代码补全的方式呈现出来。
在YCM的github主页有各个系统的对应安装方式。最大的不同是这个软件需要你自己去build,没错..之前从来没有做过这种操作所以那天晚上踩了无数坑。直到按照官网上的指导在命令行中运行以下两个步骤。
cd ~/.vim/bundle/YouCompleteMe#如果是vim-plug,应该是在~/.vim/plugins/YouCompleteMe
./install.py
ok,一排排代码在terminal中滚动,build完成。打开vim却出现如下报错:
The ycmd server SHUT DOWN (restart with ':YcmRestartServer')
百思不得其解,多方查找后得知原因。YouCompleteMe对python有强依赖型,就像neocomplete对Lua有强依赖性。所以用来build的python版本必须小心翼翼。我在这里使用的是condapython,也就是虚拟环境中的python,不管build多少次都依然报错。
最终我用了以下的方法解决:首先进入terminal,因为是conda环境所以前面有(base)表示基础虚拟环境,此时运行which python,可以看到当前python是conda环境安装的。
(base) appledeMacBook-Pro-4:~ apple$ which python
/Users/apple/miniconda3/bin/python
ok,conda deactivate失能conda再运行是什么结果呢。
(base) appledeMacBook-Pro-4:~ apple$ conda deactivate
appledeMacBook-Pro-4:~ apple$ which python
/usr/bin/python
appledeMacBook-Pro-4:~ apple$ which python2
/usr/bin/python2
appledeMacBook-Pro-4:~ apple$ which python3
/usr/bin/python3
appledeMacBook-Pro-4:~ apple$ python3 --version
Python 3.7.3
我们可以看到,当前使用的python已经是系统自带的python了,不管是brewpython还是原生的python都可以使用。
那么我们按照官网说明cd到插件文件夹。不要运行 ./install.py 直接运行
python3 install.py
等待build完成,再打开vim、没有报错。大功告成!
需要注意的是YouCompleteMe对Python依赖严重。一旦Vim版本或者python版本改变,照上述方法重新build一遍即可。
来源:https://www.cnblogs.com/chester-cs/p/11641121.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Django DRF APIView源码运行流程详解
![](https://img.aspxhome.com/file/2023/4/91954_0s.jpg)
用一个案例讲解SQL Server数据库恢复
JavaScript实现QQ聊天室功能
![](https://img.aspxhome.com/file/2023/1/136161_0s.jpg)
如何快速通过XSL转换XML文件
常用SQL语句优化技巧总结【经典】
详解MySQL数据库中字符串的正确使用
![](https://img.aspxhome.com/file/UploadPic/20106/20/2010620152746558s.gif)
python 平衡二叉树实现代码示例
![](https://img.aspxhome.com/file/2023/4/134874_0s.png)
js模仿php中strtotime()与date()函数实现方法
python用WxPython库实现无边框窗体和透明窗体实现方法详解
SQL Server下几个危险的扩展存储过程
Oracle 下医嘱执行函数
JavaScript switch语句使用方法简介
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
python中and和or逻辑运算符的用法示例
![](https://img.aspxhome.com/file/2023/0/83890_0s.jpg)
Python pyecharts案例超市4年数据可视化分析
![](https://img.aspxhome.com/file/2023/3/77643_0s.gif)
如何基于Python + requests实现发送HTTP请求
MySQL慢查询日志的配置与使用教程
![](https://img.aspxhome.com/file/2023/8/115558_0s.png)
python实现在线翻译
![](https://img.aspxhome.com/file/2023/9/84139_0s.jpg)
SqlServer创建自动收缩事务日志任务的图文教程
![](https://img.aspxhome.com/file/2023/9/119249_0s.png)
python爬虫调度器用法及实例代码
![](https://img.aspxhome.com/file/2023/6/76936_0s.png)