关于 vim - YouCompleteMe 的安装

2023-10-07 13:45
文章标签 安装 vim youcompleteme

本文主要是介绍关于 vim - YouCompleteMe 的安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前提:

确保 vim 版本是 7.4.143 或以上,并且支持 python 2/3 脚本。

先通过 Git clone  或者 plug-install  的方式安装 YCM


步骤一:

基础配件要装好,不然麻烦重重:

C++家族的配件:

sudo apt-get install llvm clang-3.9 libclang-3.9-dev libboost-all-dev

步骤二:

   我们需要找到libclang.so的路径在哪里,一般是在/usr/目录下使用一下命令查找

find /usr/ -name "libclang.so*"

  

cmake -G "<generator>" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

官方解释:

For those who want to use the system version of boost, you would pass -DUSE_SYSTEM_BOOST=ON to cmake. This may be necessary on some systems where the bundled version of boost doesn't compile out of the box.

在任意位置创建一个文件夹,在里面进行编译工作。

然后编译(在新建的文件夹里)。         

我的运行代码:

cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON DEXTERNAL_LIBCLANG_PATH=/usr/local/lib/libclang.so -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/plugged/YouCompleteMe/third_party/ycmd/cpp 

注意:这里有两个坑。

第一,注意 libclang 版本。

-- Using external libclang: /usr/lib/x86_64-linux-gnu/libclang-14.so.14.0.0

观察编译结束末尾几行中的 libclang 版本是否满足要求。系统安装的 libclang 最低要是是 3.9。

如果低于所需版本,就要删除 ~/.ycm_build 目录下的所有文件,使用下面的cmake选项参数指定 libclang 的版本重新编译。 

DEXTERNAL_LIBCLANG_PATH="xxxxxx"

第二,如果选项参数里的两个横线“--” 出问题,会出现C家族语义补全失效和找不到 "ycm_core"的情况。

成功后的输出结果,应该包含在前几行:

Using libclang to provide semantic completion for C/C++/ObjC


 步骤三:

Makefile 收尾:构建 ycm_core

官方解释:

Now that configuration files have been generated, compile the libraries using this command:

 YCM 官方墙烈推荐使用上游编译的二进制文件代替系统自带的 libclang

You can use the system libclang only if you are sure it is version 3.9 or higher, otherwise don’t. Even if it is, we recommend using the official binaries from llvm.org if at all possible. Make sure you download the correct archive file for your OS.

We STRONGLY recommend AGAINST use of the system libclang instead of the upstream compiled binaries. Random things may break. Save yourself the hassle and use the upstream pre-built libclang.

(需要python3-dev) 

cmake --build . --target ycm_support_libs --config Release

我的运行代码:

cmake --build . --target ycm_core --config Release

(config Release 选项适用于 windows)

这一步运行后会有 0% 到 100%  的编译提示,最终出现 [100%] Built target ycm_core 的字样。


步骤四:

添加 vim 配置

注意下面的 python 解释器的路径要和编译 ycm_core 的时候使用的 python 解释器是相同的版本

 #~/.vimrc
let g:ycm_server_python_interpreter="/usr/bin/python3"
let g:ycm_global_ycm_extra_conf="~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py""

其他语言:

java

首先提前安装环境:

sudo apt install openjdk-8-jre 

然后编译java环节。

python3 install.py --java-completer

官方文档:

  • Java support: install JDK 17 and add --java-completer when calling install.py.

python

python自动补全。编译过去就行。

下面是一些关于python设置的官方文档

Python settings

The Settings function allows users to specify the Python interpreter and the sys.path used by the completer to provide completion and code comprehension. No additional arguments are passed.

The return value expected by the completer is a dictionary containing the following items:

  • interpreter_path: (optional) path to the Python interpreter. ~ and environment variables in the path are expanded. If not an absolute path, it will be searched through the PATH.

  • sys_path: (optional) list of paths prepended to sys.path.

Usage example:

def Settings( **kwargs ):return {'interpreter_path': '~/project/virtual_env/bin/python','sys_path': [ '~/project/third_party/module' ]}
PythonSysPath( **kwargs )

Optional for Python support.

This function allows further customization of the Python path sys.path. Its parameters are the possible items returned by the Settings function for the Python completer:

  • interpreter_path: path to the Python interpreter.

  • sys_path: list of Python paths from sys.path.

The return value should be the modified list of Python paths.

See ycmd's own .ycm_extra_conf.py for an example.


 


问题汇总:

1.如果YCM的使用过程出现了问题,使用如下命令查看错误日志:

YcmToggleLogs stderr 

2.一个很牛的YCM调试随笔(通过修改源码使YCM支持gbk格式)

https://www.cnblogs.com/HGtz2222/p/5175151.html

3.之前遇到的一个坑:

YCM 的 python install.py ,出现了找不到 python 的情况。这时需要到出问题的文件里修改代码,将其引用的python头文件 (<pyhton.h>) 加上相对路径。

如:

include<python.h>
#改为
include<usr/local/python.h>

这篇关于关于 vim - YouCompleteMe 的安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158141

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想