首先,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-vim和neocomplete两个插件,在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下有部分语句没补全以外其他都正常。
说实话我觉得vim的补全简直就是残废……