如何在 VIM 中指定 Python 解释器版本?

Kai*_*ai7 8 c++ python vim plugins autocomplete

为了在 Vim 中用插件编写 C++,Clang_complete。
安装后出现这个错误:

Error detected while processing function <SNR>14_ClangCompleteInit..<SNR>14_initClangCompletePython:
clang_complete: No python support available.
Cannot use clang library
Compile vim with python support to use libclang
Run Code Online (Sandbox Code Playgroud)

但是我的 vim 支持 python 和 python3。+python/dyn +python3/dyn
然后我检查我的python解释器:

:echo has('python')      # output is 0
:echo has('python3')     # output is 1
Run Code Online (Sandbox Code Playgroud)

所以,我认为原因是我的vim默认动态加载python3解释器。
我可以更改 python 解释器吗?或者设置python的默认动态加载版本?

rom*_*ric 5

您可能不想(或者至少不应该)设置python3为 vim 的默认 python 解释器,因为这样您的一些(大多数)插件将变得不兼容,例如YouCompleteMeclang_complete本身,因为它们没有python3支持。通常,支持的插件python3可以让您决定是否要通过添加到您的.vimrc

let g:syntastic_python_python_exec = 'python3' 
Run Code Online (Sandbox Code Playgroud)

解决方案:这个:echo has('python')显示0实际上是在告诉你 vim 可能不是用python2. 因此,首先检查输出vim --version,您应该能够看到编译器构建 vim 所依据的共享库列表。你看到下面的内容了吗?(例如对于 python 2.7):

-L/usr/lib/python2.7/config-x86_64-linux-gnu -lpython2.7
Run Code Online (Sandbox Code Playgroud)

如果没有(或者如果您看到两者-lpython2.x-lpython3.x 我建议您从源代码编译 vim,将其专门链接到-lpython2.x。从源代码构建 vim 并不困难。首先确保删除所有当前的 vim 安装,例如使用aptitude您的做:

sudo apt-get remove --purge vim vim-runtime vim-gnome vim-tiny vim-common vim-gui-common
Run Code Online (Sandbox Code Playgroud)

克隆 vim 水银

hg clone https://code.google.com/p/vim/
cd vim
Run Code Online (Sandbox Code Playgroud)

然后./configure使用以下标志运行:

 ./configure --with-features=huge \
        --enable-cscope \
        --enable-pythoninterp \
        --enable-largefile \
        --with-python-config-dir=/usr/lib/python2.7/config 
Run Code Online (Sandbox Code Playgroud)

如果你愿意的话,你可能还想链接到rubylua,然后最后运行

make build
make install
Run Code Online (Sandbox Code Playgroud)

是 shell 脚本,它将为您自动化整个过程。这可能有点矫枉过正,但我​​认为这就是您应该处理此问题的方式,以免在运行时出现与未来软件包的兼容性问题。