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不再被认为是新的..),在目前代码完成的唯一选择是如何选择一个无需维护的插件?
#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作品,并且没有插件抱怨启动。到目前为止一切都很好:)
评论
“对于这样一种重要的编程语言,目前无法完成代码的唯一选择是如何选择一个无需维护的插件”->几乎没有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