Vim代码补全插件——YouCompleteMe安装说明

时间:2022-12-12 17:22:25

YCM快速安装(Ubuntu16.04 x64系统)

YouCompleteMe是Vim的一种快速的,模糊搜索的编译型代码补全插件。

Vim至少需要7.3.598版本,且需要python2、python3支持,Ubuntu 14.04版以上的Vim都可以。

在终端下运行$vim --version命令查看vim版本,版本太旧则需要重新编译安装Vim。

安装YCM需要安装Vundle插件。

注意:YCM是编译型插件。如果使用Vundle对YCM进行升级,ycm_core libirary APIs会有所改变(改变很少),YCM将通知你重新编译,你需要重新执行安装步骤。

安装开发工具CMake:

sudo apt-get install build-essential cmake
安装Python头文件
sudo apt-get install python-dev python3-dev
编译YCM, 需要C家族语言的语义支持:

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
编译YCM, 无需C家住语言的语义支持:

cd ~/.vim/bundle/YouCompleteMe
./install.py
以下是编译其他语言可用的支持和选项:

  • C#:安装Mono,并添加--omnisharp-completer,然后运行./install.py

  • Go:安装Go,并添加--gocode-completer,然后运行./install.py

  • TypeScript:安装Node.js and npm,然后运npm install -g typescript安装TypeScript SDK。

  • JavaScript:安装Node.js and npm,并添加--tern-completer,然后运行./install.py

  • Rust:安装Rust,并添加--racer-completer,然后运行./install.py

要安装所有语言功能,请确保以下工具xbuild,go,tsserver,node,npm,rustc,andcargo已全部安装在你的环境变量中,然后运行:

cd ~/.vim/bundle/YouCompleteMe
./install.py --all
这样,就完成了。如何使用YCM请参考用户 指南部分。别忘了,如果你需要C家族语义补全,你需要提供YCM项目的编译标志。这些都在用户指南里。

YCM 明确了它的默认选项,但你仍可以了解有什么可用的配置。有一些有趣的选项默认是关闭的,你可能想要打开它。

完全安装指南

这些步骤要让YCM在Unix操作系统和Windows上工作。

Windows用户请注意:我们假设你正运行cmd.exe命令提示符,需要的可执行文件在环境变量中。不要仅复制shell命令。用%USERPROFILE%取代~,并使用正确的Vim主目录,默认情况下vimfiles文件将代替.vim文件。

如果有任何问题请参阅FAQ。

注意:YCM是编译型插件。如果使用Vundle对YCM进行升级,ycm_core libirary APIs将会更改(更改的很少),YCM将通知你重新编译,你需要重新执行安装步骤。

请仔细阅读以下说明,每个字都读。

1.确保你的Vim至少是7.3.598版本,并已有python2或python3脚本支持。

在Vim里,键入:version 。首先看第二行到第三行输出;它应该显示VI IMproved X.YX.Y是Vim的版本。如果你的版本高于7.3,那就OK。如果你的版本是7.3,然后看下面的显示,Included
patches: 1-Z
,其中Z是某些数字,这个数字需要是598或者更高。

如果你的Vim版本太低,你需要从源码编译Vim。(别担心,这很简单,参见compile Vimfrom source

在你确定你的Vim版本是7.3.598+之后,在Vim中键入:echo has('python') || has('python3'),会输出1。如果是0,则需要安装有Python支持的Vim。

在Windows中,检查你的Vim架构是32位还是64位。这是至关重要的,因为它必须与Python和YCM架构相匹配。我们建议使用64位的Vim。

2.安装YCM需要Vundle(或者pathogen,但是Vundel更好)。

如果用Vundle的话,需要在vimrc中添加Plugin'Valloric/YouCompleteMe'

如果你不用Vundle安装,确定你已运行git submodule update --init --recursive,检查过YCM包(Vundle将为你做这些)已取得YCM依赖。

3.这一步仅是为了支持C家族语言语义补全,否则是没有必要的。

下载最新版的libclang。Clang是一个可以编译C/C++/Objective-C/Objective-C++的开源编辑器。libclang提供了这些语言的YCM语义补全引擎所需要的能源。YCM的设计工作需要libclang 3.8版本或者更高。

你可以使用系统的libclang,如果你确定它的版本是3.8或者更高,否则不要。即使它是,我们建议使用官方的二进制文件llvm.org,确保你的系统下载了正确的存档文件。

我们强烈建议使用上层已编译的二进制文件代替系统的libclang。随机性事件可能导致崩溃,保存您的hassle并使用上层预编译的libclang。

4.编译YCM所需要的ycm_core库。这个库是C++引擎,YCM用来快速补全。

你将需要安装cmake以生成所需要的makefiles文件。Linux用户可以在安装包管理器下安装cmake(sudo apt-get install cmake) ,而其他用户可以从项目网站下载安装cmake。Mac用户可以通过Homebrew的brew install cmake安装。

在Unix操作系统中,确保你安装了Python头文件。在Debian-like Linux发行版中,运行sudo apt-get install python-devpython3-dev。Mac中已经存在了。

在Windows中,你需要下载安装Python 2 orPython 3。选择与你的Vim架构相对应的版本。你还需要Microsoft Visual C++ (MSVC)建立YCM,在安装Visual Studio获得它。MSVC 11 (Visual Studio 2012), 12 (2013), and 14 (2015)需要正版支持。

这里我们假设你用Vundle安装了YCM。这意味着YCM的*目录是在 ~/.vim/bundle/YouCompleteMe里。

我们将创建一个新的文件夹存放生成的文件,运行以下命令:

cd ~
mkdir ycm_build
cd ycm_build
现在,我们需要生成makefiles文件。 如果你不关心C家族语言的语义支持,在ycm_build目录下运行以下命令:

cmake -G "<generator>" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
<generator> 在Unix系统中是 Unix Makefiles,以下是Windows的Visual Studio生成器之一:

  • Visual Studio 11 Win64
  • Visual Studio 12 Win64
  • Visual Studio 14 Win64

如果你的Vim架构是32位,那么删除生成器的Win64部分。

想要使用系统的升级版,你需要用-DUSE_SYSTEM_BOOST=ONcmake。在某些不能编译的系统升级版本中这是必须的。

注意:我们强烈建议不要使用系统的升级版代替捆绑的升级版。随机性事件可能导致崩溃,保存你的hassle并使用捆绑的升级版。

如果你关心的是C家族语言的语义支持,那么你的cmake将有一点复杂。我们假设您在第3步中从llvm.org下载了LLVM+Clang的二进制发行版,并且你解压存档文件到~/ycm_temp/llvm_root_dir (包含bin,lib,include 等文件夹)文件夹下。在Windows中,你可以使用7-zip从LLVM+Clang安装程序中解压文件。

注意:这仅适用于已下载的LLVM二进制包,不适用定制的LLVM!使用定制的LLVM时,要用EXTERNAL_LIBCLANG_PATH,具体见下文

考虑到这一点,需要在ycm_build目录下运行下列命令:

cmake -G "<generator>" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
<generator>像上面那样取代。

现在配置文件已经生成,编译库要使用下面的命令:

cmake --build . --target ycm_core --config Release
--config Release部分是针对Windows的,Unix操作系统上请忽略。

想使用系统的libclang的用户,你要使用-DUSE_SYSTEM_LIBCLANG=ON去cmake代替-DPATH_TO_LLVM_ROOT=...标志。

注意:我们强烈建议不要是用系统的libclang去代替上层已编译的二进制文件。随机性事件可能导致崩溃,保存你的hassle并使用上层预置的libclang。

你也可以强制使用自定义的libclang库,用-DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so标志(在Mac上,库的后缀是.dylib)。此外,这个标志可以代替其他的标志,如果你从源码编译的LLVM,这个标志将被使用。

如果编译带有clang支持,运行cmake命令会将libclang.[so|dylib|dll]文件放置在YouCompleteMe/third_party/ycmd目录下(YCM需要它在那里)。

5.根据需要,设置对其他语言的支持:

  • C#:非Windows平台要安装Mono。Windows平台,在YouCompleteMe/third_party/ycmd/third_party/OmniSharpServer目录下运行msbuild /property:Configuration=Release。其他平台上,用xbuild放置msbuild。Windows上,请确保构建工具msbuild在你的环境变量下。

  • Go:安装Go并添加到你的环境变量中。在YouCompleteMe/third_party/ycmd/third_party/gocode目录下运行go build
  • TypeScript:像快速安装那样,运行和npm install -gtypescript后,成功安装Node.js and npm

  • JavaScript:安装Node.js and npm。在YouCompleteMe/third_party/ycmd/third_party/tern_runtime目录下运行npm install--production
  • Rust:安装Rust。在YouCompleteMe/third_party/ycmd/third_party/racerd目录下运行cargo build --release

这样,就完成了。如何使用YCM请参考用户指南部分。别忘了,如果你需要C家族语义补全,你需要提供YCM项目的编译标志。这些都在用户指南里。

YCM 明确了它的默认选项,但你仍可以了解有什么可用的配置。有一些有趣的选项默认是关闭的,你可能想要打开它。