Windows 安装 YouCompleteMe

简介

YouCompleteMe 是 vim 下的一套代码补全引擎,简称 YCM。

安装成功 YCM 后,其代码补全性能甚至于可以与 VS 相媲美。但是,作为一个如此强大的 vim 插件,其安装过程也比其他一般插件要难过几个等级,因此,这篇博文用来记录下安装 YouCompleteMe 在 Windows 下的安装过程,争取将过程尽量说的充分又简洁。

YouCompleteMe 完整安装

注意:下面配置过程中所使用的应用请确保架构一致(都是32位或者都是64位的,千万不要混用)

  1. 确保 Vim 的版本为 7.4.1578 及以上,并且支持 Python 2 或者 Python 3.

如何查看 Vim 是否支持 Python2 或者 Python 3 ?
在 Vim 内,输入 :version,找到+python/dyn+python3/dyn+号表示支持,-表示不支持。至少有一个+才表示 Vim 支持 Python。

查看 Vim 是否能调用 Python 动态链接库 ?
上面的检测步骤做完,确定 Vim 支持 Python后,在 Vim 内输入:

:echo has('python') || echo has('python3')

如果上面返回1,那表明你的 Vim 能识别到 Python 动态链接库,配置通过。
如果返回0,表明配置失败,则进行如下判断:
首先,确保你系统已经安装了 Python,否则,先安装在按上面的步骤重新进行判断。
如果你确认系统已经安装了 Python,那就应该是 Python 版本错误。检测方法首先是从前面所讲的步骤中找到你的 Vim 是所支持的 Python 的版本:
如果支持 Python 2,则在 Vim 内输入:

:python print('test python dll')

如果出现下图所示结果,则表明当前你系统安装的 Python Vim 无法识别到,此时你要重新安装错误提示的那个 Python 版本。

python dll

比如我系统的 Vim 就应该安装 Python 3.5.xx 版本。

如果你的 Vim 支持 Python 3,则输入:

:python3 print('test python dll')

结果出错时按上述 Python 2的做法重新选择一个正确的 Python 3版本进行安装。

  1. 使用 Vunlde 安装 YouCompleteMe
Plugin 'Valloric/YouCompleteMe'
  1. 编译 ycm_core 库,YCM 通过该库可以快速完成补全。

要完成 ycm_core 的编译,你需要先准备:

  • Python 2 or Python 3 .请注意选择与你系统 Vim 架构一致的版本。推荐使用 Python 3.

  • CMake .要把 CMake 配置到系统环境变量中。

  • Visual Studio .安装时,选择 Desktop development with C++ in Workloads/开发窗口桌面程序.

  • 7-zip .为 YCM 构建C族语言语意补全时需提供。

  • libclang. Clang 是一套开源编译器,可以编译 C/C++/Objective-C/Objectivve-C++C/C++/Objective-C/Objectivve-C++.所以,如果你想要 YCM 支持以上语言的语意补全,那么你就需要下载 libclang,下载地址: official binaries from llvm.org ,下载完成后,使用 7-zip 抽取到某一目录中,我这里放在与 ./vim(vimfiles)同级目录,并改名为 LLVM。

  1. 开始编译 **ycm_core**库,一套 C++ 引擎库,使得 YCM 能有更快速的补全性能。

首先,在 ./vim(vimfiles)同级目录创建一个文件夹用来存放构建过程产生的文件:

cd 
mkdir ycm_build
cd ycm_build

接下来,我们需要产生 makefiles 文件。
如果不要求支持C族语言语意补全,输入下面内容:

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

其中,在 Unix 系统中,替换为 Unix Makefiles
在 Windows 系统中,替换为:

  • Visual Studio 12 Win64
  • Visual Studio 14 Win64
  • Visual Studio 15 Win64

如果 Vim 是32位的话,移除上面的 Win64

如果要求支持C族语言语意补全,输入下面内容:

cmake -G "Visual Studio 15 Win64" -DPATH_TO_LLVM_ROOT="D:\Program Files (x86)\Vim\LLVM" . "D:\Program Files (x86)\Vim\vimfiles/bundle/YouCompleteMe/third_party/ycmd/cpp"

上面是我电脑上的配置,读者更换为自己的相应路径即可。

上面代码运行完后,配置文件就已经产生了,接下来就可以编译库了:

cmake --build . --target ycm_core --config Release
  1. 经过前面几个大步骤,我们已经完成了 YCM 的安装以及C族语言补全代码的链接库,最后要做的就是进行配置,让 YCM 能使用C族补全代码库。

首先复制 * Vim\vimfiles 目录下。
然后,在 _vimrc 内增加如下内容:

let g:ycm_server_python_interpreter="D:/Program\ Files\ (x86)/Python/python2/python.exe"
let g:ycm_global_ycm_extra_conf="D:/Program\ Files\ (x86)/Vim/vimfiles/.ycm_extra_conf.py"

这样, YouCompleteMe 就全部配置成功了,你可以尝试代开一个 cpp 文件,看下能不能进行代码补全 :)

如有疑问之处,请查看官方文档:[Full Installation Guide])https://github.com/Valloric/YouCompleteMe#full-installation-guide)

配置 .ycm_extra_conf.py

YCM 根据该文件决定C族语言的补全行为。

当打开一个代码文件时,YCM 将顺着文件所在的路径一直向上查找,搜索到第一个配置文件将立刻读入。如果搜索不到配置文件将加载全局配置文件。这时如果全局配置文件也没有找到则语法不全不会被启用。

对于其他我们希望 YCM 也能进行语意补全的库文件,我们可以在该文件内进行配置,在 flags 中添加 isystem 即可:

flags = [
···
···
'-isystem',
'D:/Test/include',
]

完整配置

下面部分是我 YouCompleteMe 的全部配置内容:

Plugin 'Valloric/YouCompleteMe'
let g:ycm_key_invoke_completion = '' "default ,modify to alt+/
" 自动补全配置  
set completeopt=longest,menu " "让[ Vim ]的补全菜单行为与一般IDE一致(参考VimTip1228)  
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口 
inoremap   pumvisible() ? "\" : "\"    "回车即选中当前项  

"youcompleteme  默认tab  s-tab 和自动补全冲突  
let g:ycm_key_list_select_completion=['']  
let g:ycm_key_list_select_completion = ['']  
let g:ycm_key_list_previous_completion=['']  
let g:ycm_key_list_previous_completion = ['']  
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示  

"在注释输入中也能补全  
let g:ycm_complete_in_comments = 1  
"在字符串输入中也能补全  
let g:ycm_complete_in_strings = 1  
"注释和字符串中的文字也会被收入补全  
let g:ycm_collect_identifiers_from_comments_and_strings = 0  
let g:clang_user_options='|| exit 0'  
nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration " 跳转到定义处 

if IsUnix()
    let g:ycm_server_python_interpreter='/usr/bin/python'
    let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
elseif IsWin32()
        let g:ycm_server_python_interpreter="D:/Program\ Files\ (x86)/Python/python2/python.exe"
        let g:ycm_global_ycm_extra_conf="D:/Program\ Files\ (x86)/Vim/vimfiles/.ycm_extra_conf.py"
endif 

vimrc 全部配置,请查看:_vimrc

你可能感兴趣的:(Windows 安装 YouCompleteMe)