2020.02.15
我不管你使用什么方法安装的YouCompleteMe(准确的说事 git clone)
现在到 YouCompleteMe 目录下,准备编译 ycmd。
构建文件是 install.(py|sh)
无参数只解析 Python 语言
--clang-completer
or --clangd-completer
解析 C家族语言
具体看 --help
确认python 版本,在我机器上vim需要使用 python3.7,这个是必须的,因为vim 会调用 python dll,所以版本要匹配。
我的机器上的python3.7 lib文件是:libpython3.7m.dll.a
,带有 m
请看文件:YouCompleteMe/third_party/ycmd/build.py +71
DYNAMIC_PYTHON_LIBRARY_REGEX = """
^(?:
# Linux, BSD
libpython{major}\\.{minor}m?\\.so(\\.\\d+)*|
# OS X
libpython{major}\\.{minor}m?\\.dylib|
# Windows
python{major}{minor}\\.lib|
# Cygwin
libpython{major}\\.{minor}\\.dll\\.a
)$
"""
Cygwin 的正则是不匹配 libpython3.7m.dll.a
,所以需要改正则表达式或者…
还依赖 libcrypt-devel
至此Python 已经可以正常使用了(或许)。
在我这 Python3.7 不能识别 pyd 文件,所以需要
YouCompleteMe/third_party/ycmd/ycm_core.pyd ⇒ YouCompleteMe/third_party/ycmd/ycm_core.dll
但是对于 c家族还有问题
使用编译选项 --clang-completer
会下载一个文件: YouCompleteMe/third_party/ycmd/clang_archives/libclang-9.0.0-win64.tar.bz2
他会解压一个文件到目录:
YouCompleteMe/third_party/ycmd/third_party/clang/lib/libclang.lib
删除该 lib 文件
将 libclang-9.0.0-win64.tar.bz2
文件 bin
目录下的 libclang.dll
解压到 YouCompleteMe/third_party/ycmd/third_party/clang/lib/
至此 c家族 已经可以正常使用了(或许)。
我使用的是 msys2 mingw64 环境,msys 和 mingw64 都各有 Python环境,msys 的 python 最高版本是 3.7,也是vim需要的版本,而 mingw64 最高是 3.8,经过了升级。
但是Python 3.7 残余的文件还在 /mingw64/lib/python3.7
,通过 mingw64 环境启动 vim, 会因为路径问题去使用 /mingw64/lib/python3.7
里的文件,删除该目录即可。这样就会使用 /usr/lib/python3.7
目录了
具体是什么路径没有找到问题。
--clang-completer
没使用不知道还有什么问题,还是 lib 与 dll 文件使用错误(压缩包)?
确认 vim 需要的Python版本
在vim使用 :python print("lall")
:python3 print("lall")
如果失败 vim会提示没有找到相关 dll,并且提示中会有 Python的版本
在 msys 中 vim 需要 msys-python3.7m.dll