国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

一步一步帶你安裝史上最難安裝的 vim 插件 —— YouCompleteMe

2019-11-08 01:55:54
字體:
供稿:網(wǎng)友

YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.參考: https://github.com/Valloric/YouCompleteMe#full-installation-guide本篇文章默認(rèn)讀者知道什么是 unix/linux,vim/vi, YouCompleteMe,如果有不清楚的,Search engine is your friend 或者留言討論。YouCompleteMe 簡稱 YCM 以下都稱為 YCM。

YouCompleteMe 的強(qiáng)大想必大家都聽說過,簡單的用一句話來概括的話,媲美 VS 的自動(dòng)補(bǔ)全 當(dāng)然可能有一點(diǎn)點(diǎn)過,但可見其強(qiáng)大。但是作為一個(gè)十分強(qiáng)大的 vim 插件,他可是十分的難以安裝,幾乎所有的人,都會(huì)在安裝階段苦苦掙扎(別問老夫怎么知道的),然后要么成功安裝享受工具帶來的便利,要么放棄繼續(xù)使用傳統(tǒng)的自動(dòng)補(bǔ)全工具(當(dāng)然也沒有那么差,但可能沒有 YCM 那么強(qiáng)大)。

經(jīng)過老夫的辛苦探索,終于在聽到 YCM 大名的一年之后成功安裝,所以分享出來,希望能夠幫助到更多的人。另外如果在安裝過程中遇到任何問題都?xì)g迎在評論與我討論。

有了你我才是我,你的存在令我完整—— 老夫

系統(tǒng)環(huán)境:Kali-Rolling on Oracle VirtualBox,可以當(dāng)作是最新版(或者說實(shí)驗(yàn)版)的 Debian

目標(biāo):成功安裝使用 YCM, 盡量少的編譯軟件(即盡量使用預(yù)編譯 deb 包),盡量可以實(shí)現(xiàn)更多種語言的自動(dòng)補(bǔ)全

安裝步驟:

0. 確保 vim 版本是 7.4.143 或以上,并且支持 python 2/3 腳本

vim version

從上圖可以看出老夫的 vim 版本是 8.0.49 且支持 python3 腳本但不支持 python2 腳本(截圖的倒數(shù)第 7,8 行)如果你的打印結(jié)果中沒有相關(guān) python 腳本信息,還可以在 vim 中鍵入命令 :echo has('python') || has('python3'),若結(jié)果是 1 則證明是支持的。

若不論是 vim 版本不滿足條件或者是不支持 python 腳本,那么就需要從源碼編譯安裝 vim 了,

1. 通過 Vundle 來安裝 YCM(官方推薦)

快速安裝 vim 的插件管理插件 vundle

在 vim 的配置文件 ~/.vimrc 中添加一行(在call vundle#begin() 和 call vundle#end() 之間)

call vundle#begin(). . . Plugin 'Valloric/YouCompleteMe’. . .call vundle#end()

然后保存運(yùn)行 vim 命令 :PluginInstall 安裝 需要特別注意的是這個(gè)時(shí)候可能等的時(shí)間會(huì)相當(dāng)?shù)拈L

這個(gè)時(shí)候打開 vim 可能則會(huì)有警告如下圖

vim warning

1.5 通過 Git 安裝 YCM

如果你跟老夫一樣,等待 Vundle 安裝 YCM 等了好久終于貌似好像成功了,打開 vim 卻發(fā)現(xiàn) YouCompleteme unavailable : no module named future (當(dāng)然沒有遇到算你運(yùn)氣好),那么你應(yīng)該考慮一下?lián)Q用 Git 來安裝 YCM:

# 下載 (在 `~/.vim/bundle` 目錄下)$ git clone --recursive [https://github.com/Valloric/YouCompleteMe.git](https://github.com/Valloric/YouCompleteMe.git)# 檢查完整性(在 `~/.vim/bundle/YouCompleteMe` 目錄下)$ git submodule update --init --recursive

2. 下載安裝最新版的 libclang

如果不需要 C 家族的語義化補(bǔ)全,則可跳過這一步

# apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev

PS: YCM 官方墻烈推薦使用上游編譯的二進(jìn)制文件代替系統(tǒng)自帶的 libclang

You can use the system libclang only if you are sure it is version 3.9 or higher, otherwise don't. Even if it is, we recommend using the official binaries from llvm.org if at all possible. Make sure you download the correct archive file for your OS.

We STRONGLY recommend AGAINST use of the system libclang instead of the upstream compiled binaries. Random things may break. Save yourself the hassle and use the upstream PRe-built libclang.

3. 編譯構(gòu)建 ycm_core 庫

需要:cmake python3-dev

YCM 的頂層目錄或者說根目錄應(yīng)該是 ~/.vim/bundle/YouCompleteMe

創(chuàng)建一個(gè)目錄放編譯過程中產(chǎn)生的文件$ mkdir ~/.ycm_build$ cd ~/.ycm_build生成 makefile

如果跳過第三步的話,則可以直接運(yùn)行

$ cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

如果沒有跳過第三步,說明需要 c 家族的語義化補(bǔ)全則需運(yùn)行

$ cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp有問題的編譯

編譯通過的,沒有報(bào)錯(cuò),但是這個(gè)編譯結(jié)果是有問題的,看第 3 行,反復(fù)強(qiáng)調(diào)的 c 家族的語義補(bǔ)全沒有了。經(jīng)過老夫反復(fù)的檢查,原來是上面的編譯命令少了一個(gè) - 符號(hào)

$ cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

這個(gè)時(shí)候編譯的過程如下圖:

編譯正常

其實(shí)這個(gè)還是有問題的,看倒數(shù)第 3、4 行,使用的是外部的 libclang-3.6 ,第 2 步中說的系統(tǒng)安裝的 libclang 最低要是是 3.9。這個(gè)時(shí)候就需要?jiǎng)h除 ~/.ycm_build 目錄下的所有文件,使用下面的命令指定 libclang 的版本重新編譯。

$ cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DEXTERNAL_LIBCLANG_PATH=/usr/lib/x86_64-linux-gnu/libclang-3.9.so . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

編譯的結(jié)果是之前新建的目錄(也就是當(dāng)前目錄下生成了一些 Makefile 文件)

Makefile構(gòu)建 ycm_core# --config Release 這個(gè)構(gòu)建選項(xiàng)進(jìn)針對 Windows$ cmake --build . --target ycm_core --config Releasebuild ycm_core

3.5 配置

復(fù)制 .ycm_extra_conf.py 文件$ cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/添加 vim 配置注意下面的 python 解釋器的路徑要和編譯 ycm_core 的時(shí)候使用的 python 解釋器是相同的版本(2 或 3)“ ~/.vimrclet g:ycm_server_python_interpreter='/usr/bin/python'let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

4. 其他語言的支持

C#、Go、TypeScript、 javaScript、 Rust support由于老夫?qū)@些語言沒有太多的涉獵就不做介紹了。

5. 測試安裝

首先新建一個(gè) hello.c 文件,

hello.c

可以看到自動(dòng)補(bǔ)全了頭文件,厲害了老夫的 YCM

然后在 vim 中運(yùn)行 :YcmToggleLogs stderr 命令查看錯(cuò)誤日志,

stderr

沒有看到報(bào)錯(cuò)信息,則證明 YCM 已成功安裝。

作者:老東D不知火-極光

原文:http://www.jianshu.com/p/d908ce81017a


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 麻江县| 衡阳市| 临安市| 元谋县| 夹江县| 花垣县| 柳州市| 全椒县| 农安县| 拉萨市| 瓦房店市| 从江县| 苍山县| 甘泉县| 邛崃市| 凤凰县| 河间市| 都江堰市| 县级市| 梧州市| 山西省| 揭西县| 尼勒克县| 邳州市| 香河县| 盐山县| 汽车| 北票市| 仙桃市| 巴青县| 新邵县| 突泉县| 大田县| 虎林市| 南宫市| 东方市| 永胜县| 玉树县| 巴彦淖尔市| 郯城县| 宜章县|