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


YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.

參考: https://github.com/Valloric/YouCompleteMe#full-installation-guide

本篇文章默認讀者知道什麼是 unix/linux,vim/vi, YouCompleteMe,如果有不清楚的,Search engine is your friend 或者留言討論。YouCompleteMe 簡稱 YCM 以下都稱爲 YCM。


YouCompleteMe 的強大想必大家都聽說過,簡單的用一句話來概括的話,媲美 VS 的自動補全 當然可能有一點點過,但可見其強大。但是作爲一個十分強大的 vim 插件,他可是十分的難以安裝,幾乎所有的人,都會在安裝階段苦苦掙扎(別問老夫怎麼知道的),然後要麼成功安裝享受工具帶來的便利,要麼放棄繼續使用傳統的自動補全工具(當然也沒有那麼差,但可能沒有 YCM 那麼強大)。


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


有了你我纔是我,你的存在令我完整

—— 老夫


系統環境:Kali-Rolling on Oracle VirtualBox,可以當作是最新版(或者說實驗版)的 Debian


目標:成功安裝使用 YCM, 儘量少的編譯軟件(即儘量使用預編譯 deb 包),儘量可以實現更多種語言的自動補全


安裝步驟:


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

1240


vim version


從上圖可以看出老夫的 vim 版本是 8.0.49 且支持 python3 腳本但不支持 python2 腳本(截圖的倒數第 7,8 行)
如果你的打印結果中沒有相關 python 腳本信息,還可以在 vim 中鍵入命令 :echo has('python') || has('python3'),若結果是 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()


然後保存運行 vim 命令 :PluginInstall 安裝 需要特別注意的是這個時候可能等的時間會相當的長


這個時候打開 vim 可能則會有警告如下圖


1240


vim warning


1.5 通過 Git 安裝 YCM


如果你跟老夫一樣,等待 Vundle 安裝 YCM 等了好久終於貌似好像成功了,打開 vim 卻發現 YouCompleteme unavailable : no module named future (當然沒有遇到算你運氣好),那麼你應該考慮一下換用 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 家族的語義化補全,則可跳過這一步


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


PS: YCM 官方牆烈推薦使用上游編譯的二進制文件代替系統自帶的 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. 編譯構建 ycm_core 庫


需要:cmake python3-dev

YCM 的頂層目錄或者說根目錄應該是 ~/.vim/bundle/YouCompleteMe


  • 創建一個目錄放編譯過程中產生的文件

$ mkdir ~/.ycm_build
$ cd ~/.ycm_build


  • 生成 makefile



如果跳過第三步的話,則可以直接運行


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


如果沒有跳過第三步,說明需要 c 家族的語義化補全則需運行


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

1240


有問題的編譯


編譯通過的,沒有報錯,但是這個編譯結果是有問題的,看第 3 行,反覆強調的 c 家族的語義補全沒有了。經過老夫反覆的檢查,原來是上面的編譯命令少了一個 - 符號


$ cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_L


這個時候編譯的過程如下圖:


1240


編譯正常


其實這個還是有問題的,看倒數第 3、4 行,使用的是外部的 libclang-3.6 ,第 2 步中說的系統安裝的 libclang 最低要是是 3.9。

這個時候就需要刪除 ~/.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


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


1240


Makefile


  • 構建 ycm_core



# --config Release 這個構建選項進針對 Windows
$ cmake --build . --target ycm_core --config Release

1240


build ycm_core


3.5 配置


  • 複製 .ycm_extra_conf.py 文件



$ cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/


  • 添加 vim 配置

    注意下面的 python 解釋器的路徑要和編譯 ycm_core 的時候使用的 python 解釋器是相同的版本(2 或 3)


“ ~/.vimrc
let 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

由於老夫對這些語言沒有太多的涉獵就不做介紹了。


5. 測試安裝


首先新建一個 hello.c 文件,

1240


hello.c


可以看到自動補全了頭文件,厲害了老夫的 YCM


然後在 vim 中運行 :YcmToggleLogs stderr 命令查看錯誤日誌,


1240

stderr


沒有看到報錯信息,則證明 YCM 已成功安裝。


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


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章