vim 7.4同时支持python 2.x和3.x问题调研
2016-01-01 13:55
731 查看
如果你要在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
这就达到了我们的要求
参考文献
http://www.linuxidc.com/Linux/2015-04/116471.htm http://tieba.baidu.com/p/2977752030 这个有启发
我一开始怀着美好的愿望,希望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
这就达到了我们的要求
参考文献
http://www.linuxidc.com/Linux/2015-04/116471.htm http://tieba.baidu.com/p/2977752030 这个有启发
相关文章推荐
- 深入源码解析Python中的对象与类型
- Python中请使用isinstance()判断变量类型
- Python中配置matplotlib模块
- Python2.7安装及环境配置
- Python_openpyxl_styles样式处理
- python中的条件选择语句和循环语句
- python 中列表、元组、字典、文件的区别
- <LeetCode><Medium>15 ThreeNums
- python类:描述器Descriptors和元类MetaClasses
- python描述器和元类
- ghost.py 使用实例
- python上下文管理器ContextLib及with语句
- python上下文管理器ContextLib及with语句
- python字典的常用方法
- python中列表的常用方法
- Python 递归函数选择排序和二分查找
- python批量下载图片的三种方法
- 读书笔记--python数据可视化--001_matplotlib学习
- Python 阶乘的实现和递归的最大深度
- 聚类 K-Means Using Python