我正在运行Debian Jessie并使用当前的vim-nox(带有+ python -python3)。我在尝试使用Python 3编程时遇到了困难,因为我在处理Python 3代码完成方面遇到困难。

YouCompleteMe根本不支持Python3。 jedi-vim确实支持Python 3补全,但前提是我正确理解Python + 3选项。从Debian Developers的几篇文章中看来,用+ python3标志编译Vim确实没有用。因此,我剩下了python-mode插件。

除了python-mode似乎无法维护(请参阅open pull-requests和last commits)这一事实外,它目前在其master中还有一个关于绳索的巨大错误分支,它会干扰YouCompleteMe。我确实获得了一些Python 3代码完成功能,但前提是我完全禁用了YouCompleteMe。将针对python文件类型的YCM列入黑名单或禁用针对python文件的YCM完成均无效,每次打开vim时都会收到YCM警告。如何在不停用YouCompleteMe(我希望用于其他编程语言的情况下)的情况下使Python 3自动补全功能在当前的Debian发行版上工作?对于如此重要​​的编程语言(Python 3不再被认为是新的..),在目前代码完成的唯一选择是如何选择一个无需维护的插件?

评论

“对于这样一种重要的编程语言,目前无法完成代码的唯一选择是如何选择一个无需维护的插件”->几乎没有Python 3专用项目,几乎所有Python程序都能在Python 2和3上正常运行,因此Python 2完成几乎对每个人都有利。

同意@Carpetsmoker。 Vim开箱即用,带有Python补全功能,它也可以与Python3配合使用。实际上,我使用的是Vim内置的默认pythoncomplete。没有YCM,没有Jedi-vim,没有Python模式。如果您仍然想要+ python3
,请参阅我的答案
我刚刚签出pythoncomplete,我不知道该脚本包含在普通的vim安装中。那绝对是个不错的基本选择。您是否知道pythoncomplete在函数调用中添加方括号的简单方法(例如print(''))?

我认为您必须自己修改。可以在vim.org上找到源代码:vim.org/scripts/script.php?script_id=1542。诚然,它已经很老了,但是对我来说效果很好。

github.com/klen/python-mode

#1 楼

理想的方法是获取Vim的源代码并自己进行编译。

步骤1:对于类似Debian的系统,获取所需的软件包:

sudo apt-get build-dep vim


步骤2:克隆Vim的源代码:

cd /tmp && git clone https://github.com/vim/vim.git && cd vim


步骤3:配置,制作,安装

./configure --with-features=huge --enable-multibyte --enable-python3interp \
    --enable-gui=gtk-2 --prefix=/usr

make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install


步骤4:完成!您应该有一个带有+ python3支持的vim巨大版本。它还具有+ clipboard支持,因此您可以将其与系统剪贴板和gui版本一起使用。一个相当长的维基,专门用来解释如何从源代码构建Vim

评论


感谢您的快速答复。我能够用+ python3 / dyn和+ python / dyn支持构建vim。但这不能解决我的问题。一旦我启动vim,YouCompleteMe就会启动(据我所知,它始终会启动python2)。当我输入:echo has('python3')时,我得到0,而:echo has('python')返回1。我在.vimrc中有以下选项,但它们没有帮助:让g:ycm_path_to_python_interpreter =' / usr / bin / python3让g:ycm_filetype_specific_completion_to_disable = {'python':1}让g:ycm_filetype_blacklist = {'python':1}。

–xt440
2015年3月7日在5:41



对于步骤1,我建议改为:apt-get build-dep vim

– 200_success
2015年3月7日,11:21

@ 200_success,我不确定是否还会拉下剪贴板支持所需的x11内容。我没有随身携带的Linux机器来检查。

–akshay
2015年3月7日,11:24

在packages.debian.org/jessie/vim中,查看侧栏中链接的.dsc文件。我相信您建议的所有软件包(除了Merurial软件包)都直接或可传递地列为Build-Depends。特别是,libgnomeui-dev可能负责其中的许多依赖项。

– 200_success
2015年3月7日,11:37

@ 200_success,足够公平,谢谢!更新了帖子。

–akshay
2015年3月7日,11:41

#2 楼

jedi-vim现在在vim中对+ python3的支持对我来说工作正常。在我的.vimrc中添加了以下选项:
let g:jedi#force_py_version = 3

#3 楼

将此内容写成给自己的笔记比什么都重要,但这也许对某些人有用:在Arch Linux上,您可以安装使用python3编译的vim版本: />键入y,这将用启用了python3的vim替换现有的vim。

然后:

# pacman -S vim-python3
resolving dependencies...
looking for conflicting packages...
:: vim-python3 and vim are in conflict. Remove vim? [y/N] y

将安装自动完成python3。

#4 楼

几个星期以来,YouCompleteMe确实通过JediHTTP包装器支持使用Jedi的Python3完成。根据安装说明仅安装YouCompleteMe(无需安装jedi-vim),然后将以下行添加到您的.vimrc中: Python3(默认情况下,将Jedi与ycmd服务器使用的Python解释器使用相同的Python解释器,即Python2)。获得Python3自动补全功能(以及查找文档的更多内容)。

#5 楼

我必须不断地在两个python项目之间进行切换,其中一个使用python 2,另一个使用python3。
如您所述,您completeme不适用于python3。

首先我用python 3编译了vim的另一个版本(我以vim3开头),并且使用vundle作为插件管理器。

在我的.vimrc文件中,我有:

Plugin 'davidhalter/jedi-vim' " for python3
Plugin 'Valloric/YouCompleteMe' " for python2


if has('python3')
    let g:loaded_youcompleteme = 1 " disables loading it! doesnt support python3
    let g:jedi#force_py_version = 3
    let g:pymode_python = 'python3'


当我运行vim3时,它会禁用youcompleteme,但是我有jedi-vim自动完成功能。我只是刚刚开始使用它,这篇博客文章说它们并不兼容,但对我来说,自动完成功能在这两个领域中都是有效的,jedi的go-to-definition作品,python-mode的pylint作品,并且没有插件抱怨启动。到目前为止一切都很好:)

#6 楼

如果您对neovim开放,请使用deoplete和deoplete-jedi。以我的经验,这在YCM有点麻烦的情况下效果很好。