Vim是全平臺上一個高度可拓展的編輯器。它自己只是一個簡陋的編輯器,可是由於有各類插件而變得強大。使用Vim編寫代碼就難免遇到代碼補全的問題。經常使用的代碼補全插件有兩個:日本人shougo寫的neocomplete和前Google工程師Valloric寫的YouCompleteMe。用的人比較多的仍是YouCompleteMe。YouCompleteMe被稱爲Vim最難配置的插件,當初配置好YouCompleteMe也是費了九牛二虎之力,印象中是花了整整一個晚上。回報也是顯然的,支持定義跳轉,變量跳轉,超快的自動補全。下面進入正題。python
首先是自動補全的機制,在個人理解裏自動補全的實現是經過一個server來實現的。在YouCompleteMe裏,server就是python。因此當你打開Vim,plug YCM,你能夠在進程列表裏發現一個python進程,這個進程其實就是扮演了server的角色。當你編輯代碼時,server在文件目錄裏尋找關聯的文件,對全文進行處理。而後用代碼補全的方式呈現出來。git
在YCM的github主頁有各個系統的對應安裝方式。最大的不一樣是這個軟件須要你本身去build,沒錯..以前歷來沒有作過這種操做因此那天晚上踩了無數坑。直到按照官網上的指導在命令行中運行如下兩個步驟。github
cd ~/.vim/bundle/YouCompleteMe #若是是vim-plug,應該是在~/.vim/plugins/YouCompleteMe ./install.py
ok,一排排代碼在terminal中滾動,build完成。打開vim卻出現以下報錯:vim
The ycmd server SHUT DOWN (restart with ':YcmRestartServer')
百思不得其解,多方查找後得知緣由。YouCompleteMe對python有強依賴型,就像neocomplete對Lua有強依賴性。因此用來build的python版本必須當心翼翼。我在這裏使用的是condapython,也就是虛擬環境中的python,無論build多少次都依然報錯。bash
最終我用瞭如下的方法解決:首先進入terminal,由於是conda環境因此前面有(base)表示基礎虛擬環境,此時運行which python,能夠看到當前python是conda環境安裝的。app
(base) appledeMacBook-Pro-4:~ apple$ which python /Users/apple/miniconda3/bin/python
ok,conda deactivate失能conda再運行是什麼結果呢。編輯器
(base) appledeMacBook-Pro-4:~ apple$ conda deactivate appledeMacBook-Pro-4:~ apple$ which python /usr/bin/python appledeMacBook-Pro-4:~ apple$ which python2 /usr/bin/python2 appledeMacBook-Pro-4:~ apple$ which python3 /usr/bin/python3 appledeMacBook-Pro-4:~ apple$ python3 --version Python 3.7.3
咱們能夠看到,當前使用的python已是系統自帶的python了,無論是brewpython仍是原生的python均可以使用。ui
那麼咱們按照官網說明cd到插件文件夾。不要運行 ./install.py 直接運行插件
python3 install.py
等待build完成,再打開vim、沒有報錯。大功告成!命令行
須要注意的是YouCompleteMe對Python依賴嚴重。一旦Vim版本或者python版本改變,照上述方法從新build一遍便可。