如何在Windows下给Vim安装YouCompleteMe

本文同步发表在我的独立博客中

更合理的一个标题是「A (far from perfect) guide for installing YouCompleteMe under Windows」,因为虽然我已经成功地安装好了YCM,但确实全程都非常不优雅。此处「优雅」的定义为有良好的可重现能力,换一台机器同样可以比较轻松地重新安装一遍。不管怎样,不优雅的过程还是值得记录一下的。

由于YCM官方没有提供Windows下的安装指南,我主要参考的是Haroogan的方案。

安装YCM有几个基本的要求:

  1. 包含Python支持的Vim版本。
  2. LLVM/Clang,具体地说其实是libclang.dll这一个文件。
  3. Haroogan预编译好的YCM库,主要是指ycm_core.pyd这个文件。

检查Vim的Python支持的办法是在cmd中运行python --version看看出来的Python前面是否有加号,或者在Vim中执行:echo has('python')。不过相信会看这篇文章的多半是从官网下的gvim74,很不幸地这个版本并不支持Python。

不过Haroogan同学很贴心地给出了全套解决方案,上面的三个基本要求他都提供了预编译好的版本:

  1. 带Python和其它一大票语言支持的Vim
  2. LLVM for Windows
  3. YCM

需要提醒的是,不知道什么原因,上面的bitbucket.org网站中正文里的链接都挂了,不过还好下载链接可以在左侧的Downloads里找到。

下载好上面三个包之后,首先把Vim解压到程序文件夹,设置好Vim的其它东西。如果用的是Vundle管理插件,基本上复制原来的vimrc然后Update一下就好了。

然后直接把libclang.dll复制到任意PATH中的目录下(比如就在Vim文件夹中)。再在bundle文件夹下新建「YouCompleteMe」的目录,把上面第三个压缩包解压到其中。如果用Pathogen应该就可以直接用了,如果用Vundle的话,需要在vimrc中告诉Vim有这个包。

幸运的话,到这里YCM就可以使用了,随便打开一个C的文件,输入一点就可以看到自动提示了。

然而,对我来说,折腾显然没有结束。完成上面的安装之后,我用Vim打开任何文件都提示YCM server shutdown,而且没有任何其它有益的提示信息。经过很多的排除,最终确认是Python版本的问题。在我的电脑中安装了两个版本,一个是Anaconda套装(3.4),另一个是官网的几乎没有任何第三方库的2.7版,而且我的PATH中前者的目录是在前面的,所以系统运行python.exe时找到的是3.4版。然而前面的ycm_core.pyd是基于2.7版编译的,当然不能在3.4中正常使用。因此在我的情况中,只要把PATH中的2.7版移到前面,问题就部分解决了。

另外一个遇到的小问题是,需要在vimrc中显式指定一个文件的位置,才能正确地处理C语言族的文件,只需要加入如下的一行:

let g:ycm_global_ycm_extra_conf = '~/vimfiles/bundle/YouCompleteMe/third_party/ycmd/ycmd/tests/testdata/.ycm_extra_conf.py'

另外,其实开始YCM之后,Vim的启动速度还是有一点明显的变慢的,建议还是用个白名单,只允许在特定的文件类型中开启YCM,这个在帮助中有,就不再赘述了。

到此,YCM基本上就可以正常工作了。然而,对我来说还有一个没有漂亮地解决的问题是,vimrc中告诉了Vundle有YCM这个插件,但在更新或安装插件时仍然会报警。应该是Vundle的设置有问题,不过暂时不影响使用也就不管了。

题外话,当PATH中Python2.7的目录被移到Anaconda3的前面时,为了还能方便地使用后者,我创建了符号链接,把py.exe指向了python.exe,这样在命令行中输入py就可以运行3.4版了。另外由于没有把2.7的Scripts文件夹加入PATH,所以直接在命令行中还是可以运行3.4的常用命令比如pipipython等。

你可能感兴趣的:(如何在Windows下给Vim安装YouCompleteMe)