Windows Vim YouCompleteMe自动完成

时间:2014-06-26 16:47:21

标签: php windows vim autocomplete

虽然没有官方支持Windows环境,但似乎很多人都成功地完成了这项工作。 我绝望地尝试但没有成功。
我现在需要的是为php文件工作自动完成(omni-completion,关键字完成)。

我正在运行已编译的Vim 74的x64bit版本(+ python27,+ python33)here
我从同一个人那里下载了为Windows here编译的YouCompleteMe

我一如既往地使用pathogen插件安装了插件。 我已经安装了Python27& Python33(x64)和我都放在我的PATH中。 (还有windows / System32 /目录下的python27.dll)

在这种状态下。如果我运行Vim,我会收到错误:

  

" ycmd服务器SHUT DOWN(用...重启)。 Stder(最近30   线)..."

在vim启动时。同时错误日志说:

  

RuntimeError:导入ycm_core时出错。你确定你已经在文件夹中放置了一个3.2+版本的libclang。[so | dll | dylib]   " C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python"?

所以我在特定文件夹(x64bit版本)中提供了libclang.dll,虽然我正在编辑一个php文件(不是c系列文件),所以这并不相关。是吗?

好的,现在我处于启动时仍然出错的情况:

  

" ycmd服务器SHUT DOWN(用...重启)。 Stder(最近30   线)..."

但错误日志已更改,它说:

  

DEBUG - 没有全局额外的conf,没有调用方法YcmCorePreload
  回溯(最近一次调用最后一次):文件" C:\ Program   文件\的Vim \ vimfiles \包\你完成-ME \ python的\ YCM \服务器../ .. \ YCM \服务器\ handlers.py&#34 ;,   第23行,在       import ycm_core ImportError:python27.dll的模块使用与此版本的Python冲突。

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近一次调用最后一次):文件" C:\ Program   文件\的Vim \ vimfiles \包\你完成-ME \ python的\ YCM \服务器/ ycmd.py&#34 ;,   第126行,在       Main()文件" C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python \ ycm \ server / ycmd.py",   第115行,在Main       来自ycm.server导入处理程序文件" C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python \ ycm \ server ../ .. \ ycm \ server \ handlers.py" ,   第30行,在       str(e)))RuntimeError:导入ycm_core时出错。你确定你已经在文件夹中放置了一个3.2+版本的libclang。[so | dll | dylib]   " C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python"?见   文档中的安装指南。完整错误:模块使用python27.dll   与此版本的Python发生冲突。

它是什么?我很确定我需要的版本(Python 277 x64bit) 我能做什么?有人可以帮助我在Windows环境下工作吗?

更新

@ sooop的答案推动了我一点点前进,它有所帮助 问题是在PATH中我遇到过" c:\ Python27"放置" c:\ Python33"。所以它首先提供了python版本并退出搜索Py27。所以我放置了" c:\ Python27"之前" c:\ Python33"这条消息消失了。

不幸的是发生了另一个错误:现在错误日志显示:

  

文件" C:\ Program   文件\的Vim \ vimfiles \包\你完成-ME \ python的\ YCM \服务器../ .. \ YCM \服务器\ handlers.py&#34 ;,   第23行,在        import ycm_core ImportError:DLL加载失败:%1不是有效的Win32应用程序。

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近一次调用最后一次):文件" C:\ Program   文件\的Vim \ vimfiles \包\你完成-ME \ python的\ YCM \服务器/ ycmd.py&#34 ;,   第126行,in       Main()文件" C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python \ ycm \ server / ycmd.py",   第115行,在Main       来自ycm.server导入处理程序文件" C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python \ ycm \ server ../ .. \ ycm \ server \ handlers.py" ,   第30行,在       str(e)))RuntimeError:导入ycm_core时出错。你确定你已经在文件夹中放置了一个3.2+版本的libclang。[so | dll | dylib]   " C:\ Program Files \ Vim \ vimfiles \ bundle \ you-complete-me \ python"?见   文档中的安装指南。完整错误:DLL加载失败:%1不是   一个有效的Win32应用程序。

不幸的是,我根本不知道该做些什么。

@ sooop&#39的答案解决了最后两个错误。 YouCompleteMe plugin仅支持Python27(和Py26)。和#34; \ Python27 \ python.exe"的路径%PATH%环境变量必须位于第一个位置,在其他python版本之前!

2 个答案:

答案 0 :(得分:2)

替代和IMHO清洁解决方案是明确地将ycm引用到python可执行文件。为此,请将以下内容放在.vimrc中:

let g:ycm_path_to_python_interpreter = 'c:\Python27_64\python.exe'

其中c:\Python27_64\python.exe应替换为python可执行文件的完整路径。请注意,其架构(即32位或64位)应与您的vim架构相匹配。

答案 1 :(得分:1)

从%PATH%中删除路径python3。