1. 程式人生 > >VIM YouCompleteMe(ycm) 對於Python3第三方庫的自動補全【部分解決】

VIM YouCompleteMe(ycm) 對於Python3第三方庫的自動補全【部分解決】

問題:VIM 用YouCompleteMe(ycm)自動補全外掛時,只能支援Python3 的標準庫的自動補全,而不能自動補全第三方庫的內容。

環境:Mac+VIM 8.0+vundle+ycm+python3

解決:

嘗試對Python3第三方庫的自動補全進行配置。

1)在網上查閱了很多資料,至今未能解決。

照著操作完全沒有起作用,第三方庫還是聯想不起來。

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 就可以看到部分效果了。不是所有都能引用,但是比原來一點沒有補全要強的太多了。