问题:VIM 用YouCompleteMe(ycm)自动补全插件时,只能支持Python3 的标准库的自动补全,而不能自动补全第三方库的内容。
环境:Mac+VIM 8.0+vundle+ycm+python3
解决:
尝试对Python3第三方库的自动补全进行配置。
1)在网上查阅了很多资料,至今未能解决。
首先是官网https://github.com/Valloric/YouCompleteMe#working-with-third-party-packages里的安装介绍。
照着操作完全没有起作用,第三方库还是联想不起来。
根据查阅的资料,ycm实际是用的jedi的模块和功能来补全python,因此参考https://vi.stackexchange.com/questions/2403/vim-code-completion-for-python-3的意见,直接下载jedi并安装。
git clone --recursive https://github.com/davidhalter/jedi-vim.git ~/.vim/bundle/jedi-vim
然后在~/.vimrc中添加:
"为了Python3的第三方库安装Jedi插件
Plugin 'davidhalter/jedi-vim'
"===============================Jedi==================================
if has('python3')
let g:loaded_youcompleteme = 1 " 判断如果是python3的话,就禁用ycmd。
let g:jedi#force_py_version = 3
let g:pymode_python = 'python3'
endif
"===============================Jedi===================================
但是实际运行起来会报错,提示在Python的目录下没有找到jedi.py的文件,于是再安装一个jedi的库。
pip3 install jedi
结果,还是不行;而且jedi的匹配需要用到很多快捷键。因此直接放弃。还是回头来找ycmd的实现。
2)重新查阅官方文件。检查配置,首先清除多余的配置,注意:清干净!
在~/.vimrc中添加:
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
然后按照官方指导老老实实的重新配置.ycm_extra_conf.py。按照官方的说明,加上Python语言有一些了解,对 ~/.vim/bundle/YouCompleteMe下的.ycm_extra_conf.py做如下更改(老规矩,更改之前先备份),并拷贝到$HOME目录:
def PythonSysPath( **kwargs ):
sys_path = kwargs[ 'sys_path' ]
改为:
def PythonSysPath( **kwargs ):
sys_path = kwargs[ 'sys_path' ]
sys_path.insert( 1, '/path/to/third_party/package' )
return sys_path
cp ~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py ~/
然后重启vim,执行:YcmCompleter GoTo 就可以看到部分效果了。不是所有都能引用,但是比原来一点没有补全要强的太多了。