vim自動(dòng)補(bǔ)全插件YouCompleteMe(YCM)安裝過程解析
Vim是全平臺上一個(gè)高度可拓展的編輯器。它本身只是一個(gè)簡陋的編輯器,但是因?yàn)橛懈鞣N插件而變得強(qiáng)大。使用Vim編寫代碼就不免遇到代碼補(bǔ)全的問題。常用的代碼補(bǔ)全插件有兩個(gè):日本人shougo寫的neocomplete和前Google工程師Valloric寫的YouCompleteMe。用的人比較多的還是YouCompleteMe。YouCompleteMe被稱為Vim最難配置的插件,當(dāng)初配置好YouCompleteMe也是費(fèi)了九牛二虎之力,印象中是花了整整一個(gè)晚上?;貓?bào)也是顯然的,支持定義跳轉(zhuǎn),變量跳轉(zhuǎn),超快的自動(dòng)補(bǔ)全。下面進(jìn)入正題。
首先是自動(dòng)補(bǔ)全的機(jī)制,在我的理解里自動(dòng)補(bǔ)全的實(shí)現(xiàn)是通過一個(gè)server來實(shí)現(xiàn)的。在YouCompleteMe里,server就是python。所以當(dāng)你打開Vim,plug YCM,你可以在進(jìn)程列表里發(fā)現(xiàn)一個(gè)python進(jìn)程,這個(gè)進(jìn)程其實(shí)就是扮演了server的角色。當(dāng)你編輯代碼時(shí),server在文件目錄里尋找關(guān)聯(lián)的文件,對全文進(jìn)行處理。然后用代碼補(bǔ)全的方式呈現(xiàn)出來。
在YCM的github主頁有各個(gè)系統(tǒng)的對應(yīng)安裝方式。最大的不同是這個(gè)軟件需要你自己去build,沒錯(cuò)..之前從來沒有做過這種操作所以那天晚上踩了無數(shù)坑。直到按照官網(wǎng)上的指導(dǎo)在命令行中運(yùn)行以下兩個(gè)步驟。
cd ~/.vim/bundle/YouCompleteMe #如果是vim-plug,應(yīng)該是在~/.vim/plugins/YouCompleteMe ./install.py
ok,一排排代碼在terminal中滾動(dòng),build完成。打開vim卻出現(xiàn)如下報(bào)錯(cuò):
The ycmd server SHUT DOWN (restart with ':YcmRestartServer')
百思不得其解,多方查找后得知原因。YouCompleteMe對python有強(qiáng)依賴型,就像neocomplete對Lua有強(qiáng)依賴性。所以用來build的python版本必須小心翼翼。我在這里使用的是condapython,也就是虛擬環(huán)境中的python,不管build多少次都依然報(bào)錯(cuò)。
最終我用了以下的方法解決:首先進(jìn)入terminal,因?yàn)槭莄onda環(huán)境所以前面有(base)表示基礎(chǔ)虛擬環(huán)境,此時(shí)運(yùn)行which python,可以看到當(dāng)前python是conda環(huán)境安裝的。
(base) appledeMacBook-Pro-4:~ apple$ which python /Users/apple/miniconda3/bin/python
ok,conda deactivate失能conda再運(yùn)行是什么結(jié)果呢。
(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
我們可以看到,當(dāng)前使用的python已經(jīng)是系統(tǒng)自帶的python了,不管是brewpython還是原生的python都可以使用。
那么我們按照官網(wǎng)說明cd到插件文件夾。不要運(yùn)行 ./install.py 直接運(yùn)行
python3 install.py
等待build完成,再打開vim、沒有報(bào)錯(cuò)。大功告成!
需要注意的是YouCompleteMe對Python依賴嚴(yán)重。一旦Vim版本或者python版本改變,照上述方法重新build一遍即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 2.6.6升級到Python2.7.15的詳細(xì)步驟
這篇文章主要介紹了Python 2.6.6升級到Python2.7.15的詳細(xì)步驟,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Python?OpenCV中cv2.minAreaRect實(shí)例解析
minAreaRect的主要作用是獲取一個(gè)多邊形(就是有很多個(gè)點(diǎn)組成的一個(gè)圖形)的最小旋轉(zhuǎn)矩形(旋轉(zhuǎn)矩形就是我們平常見到的水平框帶了角度),這篇文章主要給大家介紹了關(guān)于Python?OpenCV中cv2.minAreaRect的相關(guān)資料,需要的朋友可以參考下2022-11-11
Python依賴包遷移到斷網(wǎng)環(huán)境操作
這篇文章主要介紹了Python依賴包遷移到斷網(wǎng)環(huán)境操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
python3調(diào)用ansible?api使用實(shí)例例說明
這篇文章主要為大家介紹了python3?調(diào)用ansible?api使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

