在Python 3中获得Vim的最简单方法是什么?


19

我已经安装了Ubuntu 14.04,并且其回购协议中的Vim编译时没有Python 3支持。因此,python-mode插件无法与Python 3代码一起使用。在Python 3中获得Vim的最简单方法是什么?

Answers:


16

看来(至少)在基于Debian的系统上,您也不能吃蛋糕。它是Python 2或Python3。由于Python库的构建方式,您只能在Vim会话中使用一个变体。你可以用两个构建,但如果Python 2中被调用的Vim,那么Python 3,不能在同一个会议的要求,反之亦然。同样在Arch Linux上,Vim仅使用Python 2(vimgvim)或Python 3(vim-python3gvim-python3)之一进行编译。


在16.04之前

要重建存储库提供的Vim:

sudo apt-get build-dep vim
apt-get source vim
cd vim-*  # it will be vim-7.4.something

编辑debian/rules并替换:

ALLINTERPFLAGS+=--enable-pythoninterp --with-python-config-dir=$(shell python-config --configdir)
ALLINTERPFLAGS+=--disable-python3interp

拥有:

ALLINTERPFLAGS+=--enable-pythoninterp=dynamic --with-python-config-dir=$(shell python-config --configdir)
ALLINTERPFLAGS+=--enable-python3interp=dynamic --with-python3-config-dir=$(shell python3-config --configdir)

然后运行:

dpkg-buildpackage -us -uc

吃午饭。(如果您使用过,也可以喝茶-j $(nproc)。)

现在,.deb将在父目录中创建多个文件。要查看哪个:

cd ..
ls vim*.deb

随着特定变体要安装(vimvim-gnomevim-gtk等),你必须安装vim-common_*.debvim-runtime_*.deb以及用于GUI版本vim-gui-common_*.deb。例如,使用vim-gnome,以及vim存储库中的当前版本:

sudo dpkg -i vim-gnome_7.4.052-1ubuntu3_amd64.deb vim-common_7.4.052-1ubuntu3_amd64.deb vim-gui-common_7.4.052-1ubuntu3_all.deb vim-runtime_7.4.052-1ubuntu3_all.deb

然后:

$ vim --version | grep python
+cryptv          +linebreak       +python/dyn      +viminfo
+cscope          +lispindent      +python3/dyn     +vreplace

PI-RHO的/ dev PPA建立vim以这种方式,这样你就可以使用PPA而不是手动构建它。


16.04

从16.04开始,Ubuntu使用Python 3支持构建Vim。Python 2中支持由提供-py2vim-nox-py2vim-gnome-py2等)。


有关:


用这种方法编译的Vim在尝试加载pymode函数时给我一个错误:使用:python后,该Vim无法执行:py3。当我使用Gentoo而不是Ubuntu时,vim使用python 3,这个问题不存在。
CrabMan

@CrabMan阅读第一段。
muru

@CrabMan您可以尝试的是仅使用Python3进行构建(本质上是在已经存在的行中交换python3和python)。然后,任何尝试加载python2的操作都会失败。
muru

YouCompleteMe不可用:需要使用Python 2.x支持编译的Vim。我认为这是我使用的最重要的vim扩展之一,因此不是一种选择。
CrabMan

据我了解,我也可以在.vimrc中加入“ py3 3”行,其效果与仅支持python3的vim相同。
CrabMan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.