下载YouCompleteMe
使用vundle的方式安装。按照 Vundle 在Windows上的安装指南,安装好git, 官方提供了一个Curl.cmd
来保证Curl可以在Windows终端运行。然后git clone
将Vundle拉取到本地。
按照官方的 Quick Start ,同时参考简书 Sam_Lau的 Vim配置、插件和使用技巧 加入了_vimrc.bundles文件
。在gVim运行:PluginInstall
成功下载好了插件。当然直接参考官方把配置放到_vimrc
也可以。
编译和问题排查
之后经历了几个问题,排查花了一些时间。
第一个问题:vim不能支持Python(实际上是不能发现python36.dll).
下载好各个插件之后,启动gVim,提示YouCompleteMe unavailable: requires Vim compiled with Python (2.6+ or 3.3+) support
。
然而在gVim中执行 :version
得到的是 +python/dyn
和 +python3dyn
,并且本地已经安装了python36-x32, gVim也是32位的,不符合初步搜索中的“确认python和gVim都是32或都是64位保持一致”的解决方案.
搜索了 StackOverflow, 进一步的验证发现 echo has('python')
和 echo has('python3')
都是0。这说明没有正确加载Python程序的dll。
测试python3 print('hello')
果然发现报错信息中提示,不能正确加载python35.dll
. 因为我本地安装的是python36-x32,所以自然找不到。尝试修改这一加载设置,无果。于是重新装了python35-x32,echo has('python3')
成功返回1. 第一个问题解决。
总结:
gVim程序提示不支持Python的一个原因可能是没有发现Python的dll。确保安装的Python和gVim都是64位或都是32位的,同时使用python3 print('hello')
看加载错误的提示信息来确定问题。
第二个问题:
之后,可以正常启动gVim,要编辑文件时提示YCM core library not detected:
The ycmd server SHUTDOWN. ...YCM core library not detected; you need to compile YCM before using it
, 因为还没有开始编译YCM。
于是继续按照 YouCompleteMe项目Github主页的简易版安装指南 进行编译安装。
出现问题。再切换到完整安装指南
1. 检查vim版本和Python支持,OK。
2. 安装YCM, OK.
3. 对semantic completion 语义补全有需要的进行这一步,我直接先跳过。
4. 编译ycm_core
。 需要Visual Studio 2013(或以上版本)。 CMake的支持。(MSVC 12 (Visual Studio 2013), 14 (2015), and 15 (2017) are officially supported.)
建立一个ycm_build文件夹,命令行运行
cmake -G "Visual Studio 12" . ($*Path_To_YCM*)/YouCompleteMe/third_party/ycmd/cpp
,这里的$Path_To_YCM是YCM文件夹路径, 按照自己的安装位置修改。本地安装了VS 2013,所以选择"Visual Studio 12"
。
运行结果提示
(missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
.
继续找问题,发现需要修改YCM文件夹下的CMakeLists.txt 。
option( USE_PYTHON2 "If on, link to Python 2 instead of 3" OFF )
set(PYTHON_INCLUDE_DIR "D:/Program Files (x86)/Python35-32/include")
set(PYTHON_LIBRARY "D:/Program Files (x86)/Python35-32/libs/python35.lib")
由于我没有安装Python2,所以将原来USE_PYTHON2
的flag设置成了OFF,手动加入了PYTHON_INCLUDE_DIR
和 PYTHON_LIBRARY
, 注意报错提示给的是(missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
,末尾有字母s
, 然后再次运行,成功.
最后一步,运行cmake --build . --target ycm_core --config Release
, 第一次出问题,尝试将上一步重新Generate一次,再重新Build,结果成功。
至于语义补全,等有时间再研究一下。
几个相关链接:
1. Vim配置教程
2. 对解决缺失PythonLib有帮助