Plum's Blog

Vim下Python3的补全

首先,Ubuntu14.04里默认的Vim是不支持Python3的,在运行:

vim --version | grep python


后发现为:

-python3

解决方法有二,一是自己编译加上参数,另一个是使用现成的PPA:

sudo apt-add-repository ppa:pi-rho/dev
sudo apt-get update
sudo apt-get install vim

安装完毕后别忘了运行前面的命令看看python3前面是不是变成加号了。

最新版的jedi已经提供了对Python3的支持,所以依赖jedi实现的补全是可行的。

首先你需要安装jedi,安装方法可以看官方说明,用不用virtualenv看个人需求,我直接装系统里了。

sudo pip3 install jedi

接下来给你的vim安装jedi-vimneocomplete两个插件,在vim的配置中以neocomplete为主,搭配jedi-vim:

原始配置可以照抄neocomplete的Configuration Examples,有几点需要注意:

将:

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

替换为:

autocmd FileType python setlocal omnifunc=jedi#completions

然后添加以下几行,如果有了就不用添加了:

let g:neocomplete#enable_auto_select = 0
let g:jedi#popup_select_first=0
set completeopt=longest,menuone
let g:jedi#auto_vim_configuration = 0
let g:jedi#popup_on_dot = 0
if !exists('g:neocomplete#force_omni_input_patterns')
        let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\)\w*'

最重要的一点是,jedi-vim与Python-mode这个插件包有冲突,建议禁用后者,然后将后者里自己需要的插件抠出来单独安装。

如果启动时出现错误:

代表Vim调用lua支持有问题,进入Vim后运行:

:lua print('KThentai')

得到结果:

搜索后知道是文件libluajit-5.1.so.2的缺失,何时缺失的我也不知道,装回来就是了:

sudo apt-get install libluajit-5.1-2

然后Python3的补全在vim下就工作正常了,目前除了PyQt5下有部分语句没补全以外其他都正常。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »