首页 > vim 7.4同时支持python 2.x和3.x问题调研

vim 7.4同时支持python 2.x和3.x问题调研

如果你要在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   这个有启发

更多相关:

  • 在macOS安装软件,首选工具当然是HomeBrew,怎么安装请自行百度。 vim在macOS Sierra(10.12.2)上的默认版本是7.4,但是我希望尽可能升级到最新的vim版本,并且尽量具有最多的功能和对更多编程语言的支持。而这一切使用HomeBrew安装vim可以轻松搞定。下面是我实践之后总结出来的结果,以作备忘。 1...

  • CentOS 6.6 64bit上默认的vim版本是7.2 minimal,通过下面的命令查看 yum list installed | grep vim 我打算将其卸载并重新安装官网最新版vim 7.4, 假设下面的操作都使用root权限进行 本次基于源码安装的vim 7.4要求具有如下特色: (1)支持python/lua...

  • 在CentOS 6.3 64bit上一个没有配置好的vim中,修改了一个python脚本,运行时就反复报错,说 IndentationError: unexpected indent python 怎么调整格式都不对,这才真正领教了python格式对齐的厉害。没方法只好用xshell将该文件转到原来的Ubuntu 14.04下面...

  • 在CentOS 6.2上搭建vim开发环境...

  • 出品 | FlyAI编译 | 林椿眄编辑 | DonnaPython 已经成为机器学习及其他科学领域中的主流语言。它不但与多种深度学习框架兼容,而且还包含优秀的工具包和依赖库,方便我们对数据进行预处理和可视化操作。据最新消息,到2019 年底,Numpy 等很多科学计算工具包都将停止支持Python 2版本,而 2018 年后 Num...

  • 转载: 简单回答题主的问题,如果编程零基础,建议以python入门,但是并不建议以此作为数据分析的全部。R可以说是必须要学的,除此两者以外的,可以泛泛的关注。 =================================分割线================================= 下面详细说一下自己的看法,仅仅是个人...

  • 随着人工智能时代的来临,Python开始崭露头角并迅速吸引了人们的广泛关注。很多人想要从事Python开发,但零基础入门Python,需要了解什么呢?看看你都掌握了吗? 1.Python是如何被解释执行的? Python是一种解释型语言,它可以直接从源代码运行程序。程序员编写的源代码首先转变成一种中间语言代码,然后再被转换成能够直接执...

  • 该文章为转载内容,请关注文章作者博客https://blog.csdn.net/io569417668 Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。 本系列学习计划有Blue同学作为发起人,主要以Open3D官...

  • 在python中利用urllib2或是pycurl都可以实现http POST请求功能,下面是源码: #!/usr/bin/env python #encoding: utf-8 #description: demo a simple post form #date: 2015-12-14import urllib, urllib...

  • 很多情况下需要对视频格式转换才能正常观看,下面就由微侠网小编给您介绍这款软件,佳佳MPEG4格式转换器是专业的MPEG4、H264和MP4格式转换工具,软件支持将MPEG4视频转换成多种格式音频播放,操作简单,转换速度快。看完的小伙伴可以关注微侠网下载最新版软件以及查看最新攻略及资讯!软件介绍超快的转换速度和完美的转换质量。通过顶级音...

  • 代码量:9行 码云仓库:https://gitee.com/Gaooo/2016035107059.git 实现时间:emmmmm(9行代码,自己估计!!) 程序对表达式类型的支持程度:全部支持! 能支持两个操作数,一种运算符。能支持两个操作数的简单四则运算(只有一个操作符)。能支持简单混合四则运算(最多有3个操作符,没有括号)。能支...

  • 一、API     1. 出现新的上下文接口:SparkSession,统一了SQLContext和HiveContext,并且为SparkSession开发了新的流式调用的configuration API     2. 统一了DataFrame和DataSet。DataFrame相当于DataSet[Row],以及DataSet的...

  • 官网: http://www.redmine.org/ http://demo.redmine.org/ 下载: http://www.redmine.org/projects/redmine/wiki/Download   Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同...

  •     项目编号:BBZC12-106-1 项目名称:重庆市公安局北碚分局所需容灾备份设备及软件采购 重庆市北碚区公共资源综合交易中心 二〇一二年六月二十五日 第一部分 招标邀请书 重庆市北碚区公共资源综合交易中心根据重庆市北碚区政府采购办公室下达的采购任务,拟对重庆市公安局北碚分局所需容灾备份设备及软件采购进行公开招标,欢迎...