我已经安装了vim,并使用进行了配置+python3/dyn
。如果我跑步,vim --noplugin
我可以使用py3
。但是,启用我的插件后,出现以下错误:
E837: This Vim cannot execute :py3 after using :python
E263: Sorry, this command is disabled, the Python library could not be loaded.
我怀疑其中一个插件加载了python2,因此定义了正在使用的python版本(类似于此vim-bootstrap问题)。问题是我不知道哪个。
我如何在我的vim版本中使用python3?
已安装柱塞
Vundle安装了以下插件:
60 " let Vundle manage Vundle, required
61 Plugin 'gmarik/Vundle.vim'
62 "Bundle 'Valloric/YouCompleteMe'
63 Plugin 'tmhedberg/SimpylFold'
64 Plugin 'vim-scripts/indentpython.vim'
65 Plugin 'scrooloose/syntastic'
66 Plugin 'scrooloose/nerdtree'
67 Plugin 'jistr/vim-nerdtree-tabs'
68 Plugin 'kien/ctrlp.vim'
69 Plugin 'tpope/vim-fugitive'
70 Plugin 'nvie/vim-flake8'
71 "Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
72 Plugin 'vim-airline/vim-airline'
73 Plugin 'vim-airline/vim-airline-themes'
74 Bundle 'klen/python-mode'
75 Plugin 'jmcantrell/vim-virtualenv'
尝试将Python3设置为默认/首选版本
我试图通过运行以下命令使python3成为首选:
alternatives --install /usr/bin/python python /usr/bin/python3.5 2
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
vim(或其中一个插件)仍然使用python2.7,并且出现与上述相同的错误。
我的vim版本
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 2 2016 10:02:17)
Included patches: 1-1868
Modified by <[email protected]>
Compiled by <[email protected]>
Huge version without GUI.
问题是,仅has('python')
当在if-语句中执行时,当使用python / dyn和python3 / dyn编译vim时,python3不可用。最简单的解决方案可能就是添加类似
if exists('py2') && has('python')
elseif has('python3')
endif
在Vundle加载任何内容之前,将其添加到您的.vimrc。然后,如果您需要使用python 2,则可以使用来启动vim vim --cmd 'let py2 = 1'
。
另外,我浏览了您的插件,并设法找到了3个has('python')
之前做过的插件has('python3')
:
YouCompleteMe:我知道您已经对此进行了注释,但这是我偶然发现此问题的方式,因此可能会导致此处出现其他人。在YouCompleteMe线36 /插件/ youcompleteme.vim,化妆python3 GET检查第一:elseif !has( 'python3' ) && !has( 'python' )
。
python-mode:如果您在python-mode / plugin / pymode.vim中查看,在第275行附近有“具有” if语句,您会注意到实际上可以设置一个全局变量g:_uspy
来强制使用某个版本。因此,可以将g:_uspy = ':py3'
.vimrc放在Vundle的内容之前,也可以在pymode.vim中编辑if语句。
vim-virtualenv:与YCM一样,颠倒vim-virtualenv / plugin / virtualenv.vim第10行上if语句的条件。
当然,如果您这样做,实际上只需要修复已加载的第一个即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句