vim无法完美支持Python2和Python 3

import sys; print(sys.version)

如果你要在VIM中增加诸如YouCompleteMe这一类的插件的话,那么你需要VIM有Python的支持,这个是在一开始编译的选项里指定的。
我一开始怀着美好的愿望,希望vim能完美支持Python2和Python 3,所以,我在源码编译vim 7.4时加入了对Python这两个版本的支持。
另外,我也安装了YouCompleteMe插件,但是使用vim时我看到vim的抱怨


下面是我的调研,Vim的帮助文件中这样描述:
Vim 7.4源码可以用四种方式编译 (:version输出结果): 
1. 无 Python 支持 (-python、-python3) 
2. 只有 Python 2 支持 (+python 或 +python/dyn、-python3) 
3. 只有 Python 3 支持 (-python、+python3 或 +python3/dyn) 
4. Python 2 和 3 支持 (+python/dyn、+python3/dyn)

目前我遇到下面的问题:
vim --version | grep python
得到+python/dyn和+python3/dyn,但是在
:echo has('python') 命令行却输出0而非1
:echo has('python3') 命令行却输出0而非1

在vim命令模式下面运行
:h python-2-and-3
我们得到下面的说明:

vim中Python2和Python 3不能共存,当它们都支持时,它们必须是动态载入的方式。在Linux/Unix环境中,当导入全局符号时,会导致第二个Python版本崩溃。
所以要么加载global symbols只激活一个Python版本,要么不导入全局符号,这会导致Python导入vim提供的全局符号的相关库的import出错。

结论

最后,没有办法,为了减少麻烦,还是让vim支持Python的一个版本吧

重新编译安装vim

进入vim源码目录,先卸载vim,再清除原有配置

cd vim74/src  

make uninstall   //vim卸载了
make clean  
rm -f src/auto/config.cache

重新编译安装,只支持Python 2.7.x

./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=/usr/local/python2710/lib/python2.7/config --enable-rubyinterp --enable-perlinterp --enable-luainterp --with-lua-prefix=/usr --enable-cscope  --enable-multibyte  --enable-gui=auto --enable-xim  --with-x --enable-fontset --enable-sniff --disable-selinux 
make  
make install

验证Python版本支持情况

vim --version | grep python

然后打开一个文件

vim old.vimrc

在命令行输入

:echo has('python')命令行为1
:echo has('python3')命令行为0

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值