1. 程式人生 > >Vim程式碼補全外掛——YouCompleteMe安裝說明

Vim程式碼補全外掛——YouCompleteMe安裝說明

YCM快速安裝(Ubuntu16.04 x64系統)

YouCompleteMe是Vim的一種快速的,模糊搜尋的編譯型程式碼補全外掛。

Vim至少需要7.3.598版本,且需要python2、python3支援,Ubuntu 14.04版以上的Vim都可以。

在終端下執行$vim --version命令檢視vim版本,版本太舊則需要重新編譯安裝Vim。

安裝YCM需要安裝Vundle外掛。

注意:YCM是編譯型外掛。如果使用Vundle對YCM進行升級,ycm_core libirary APIs會有所改變(改變很少),YCM將通知你重新編譯,你需要重新執行安裝步驟。

安裝開發工具CMake:

sudo apt-get install build-essential cmake
安裝Python標頭檔案
sudo apt-get install python-dev python3-dev
編譯YCM,需要C家族語言的語義支援:
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
編譯YCM,無需C家住語言的語義支援:
cd ~/.vim/bundle/YouCompleteMe
./install.py
以下是編譯其他語言可用的支援和選項:
  • C#:安裝Mono,並新增--omnisharp-completer,然後執行./install.py

  • Go:安裝Go,並新增--gocode-completer,然後執行./install.py

  • TypeScriptnpm install -g typescript安裝TypeScript SDK。

  • JavaScript:安裝Node.js and npm,並新增--tern-completer,然後執行./install.py

  • Rust:安裝Rust,並新增--racer-completer,然後執行./install.py

要安裝所有語言功能,請確保以下工具xbuild,go,tsserver,node,npm,rustc,andcargo已全部安裝在你的環境變數中,然後執行:

cd ~/.vim/bundle/YouCompleteMe
./install.py --all
這樣,就完成了。如何使用YCM請參考使用者指南部分。別忘了,如果你需要C家族語義補全,你需要提供YCM專案的編譯標誌。這些都在使用者指南里。

YCM 明確了它的預設選項,但你仍可以瞭解有什麼可用的配置。有一些有趣的選項預設是關閉的,你可能想要開啟它。

完全安裝指南

這些步驟要讓YCM在Unix作業系統和Windows上工作。

Windows使用者請注意:我們假設你正執行cmd.exe命令提示符,需要的可執行檔案在環境變數中。不要僅複製shell命令。用%USERPROFILE%取代~,並使用正確的Vim主目錄,預設情況下vimfiles檔案將代替.vim檔案。

如果有任何問題請參閱FAQ。

注意:YCM是編譯型外掛。如果使用Vundle對YCM進行升級,ycm_core libirary APIs將會更改(更改的很少),YCM將通知你重新編譯,你需要重新執行安裝步驟。

請仔細閱讀以下說明,每個字都讀。

1.確保你的Vim至少是7.3.598版本,並已有python2或python3指令碼支援。

在Vim裡,鍵入:version 。首先看第二行到第三行輸出;它應該顯示VI IMproved X.YX.Y是Vim的版本。如果你的版本高於7.3,那就OK。如果你的版本是7.3,然後看下面的顯示,Included patches: 1-Z,其中Z是某些數字,這個數字需要是598或者更高。

如果你的Vim版本太低,你需要從原始碼編譯Vim。(別擔心,這很簡單,參見compile Vimfrom source

在你確定你的Vim版本是7.3.598+之後,在Vim中鍵入:echo has('python') || has('python3'),會輸出1。如果是0,則需要安裝有Python支援的Vim。

在Windows中,檢查你的Vim架構是32位還是64位。這是至關重要的,因為它必須與Python和YCM架構相匹配。我們建議使用64位的Vim。

2.安裝YCM需要Vundle(或者pathogen,但是Vundel更好)。

如果用Vundle的話,需要在vimrc中新增Plugin'Valloric/YouCompleteMe'

如果你不用Vundle安裝,確定你已執行git submodule update --init --recursive,檢查過YCM包(Vundle將為你做這些)已取得YCM依賴。

3.這一步僅是為了支援C家族語言語義補全,否則是沒有必要的。

下載最新版的libclang。Clang是一個可以編譯C/C++/Objective-C/Objective-C++的開源編輯器。libclang提供了這些語言的YCM語義補全引擎所需要的能源。YCM的設計工作需要libclang 3.8版本或者更高。

你可以使用系統的libclang,如果你確定它的版本是3.8或者更高,否則不要。即使它是,我們建議使用官方的二進位制檔案llvm.org,確保你的系統下載了正確的存檔檔案。

我們強烈建議使用上層已編譯的二進位制檔案代替系統的libclang。隨機性事件可能導致崩潰,儲存您的hassle並使用上層預編譯的libclang。

4.編譯YCM所需要的ycm_core庫。這個庫是C++引擎,YCM用來快速補全。

你將需要安裝cmake以生成所需要的makefiles檔案。Linux使用者可以在安裝包管理器下安裝cmake(sudo apt-get install cmake) ,而其他使用者可以從專案網站下載安裝cmake。Mac使用者可以通過Homebrew的brew install cmake安裝。

在Unix作業系統中,確保你安裝了Python標頭檔案。在Debian-like Linux發行版中,執行sudo apt-get install python-devpython3-dev。Mac中已經存在了。

在Windows中,你需要下載安裝Python 2 orPython 3。選擇與你的Vim架構相對應的版本。你還需要Microsoft Visual C++ (MSVC)建立YCM,在安裝Visual Studio獲得它。MSVC 11 (Visual Studio 2012), 12 (2013), and 14 (2015)需要正版支援。

這裡我們假設你用Vundle安裝了YCM。這意味著YCM的頂級目錄是在~/.vim/bundle/YouCompleteMe裡。

我們將建立一個新的資料夾存放生成的檔案,執行以下命令:

cd ~
mkdir ycm_build
cd ycm_build
現在,我們需要生成makefiles檔案。如果你不關心C家族語言的語義支援,在ycm_build目錄下執行以下命令:
cmake -G "<generator>" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
<generator> 在Unix系統中是Unix Makefiles,以下是Windows的Visual Studio生成器之一:
  • Visual Studio 11 Win64
  • Visual Studio 12 Win64
  • Visual Studio 14 Win64

如果你的Vim架構是32位,那麼刪除生成器的Win64部分。

想要使用系統的升級版,你需要用-DUSE_SYSTEM_BOOST=ONcmake。在某些不能編譯的系統升級版本中這是必須的。

注意:我們強烈建議不要使用系統的升級版代替捆綁的升級版。隨機性事件可能導致崩潰,儲存你的hassle並使用捆綁的升級版。

如果你關心的是C家族語言的語義支援,那麼你的cmake將有一點複雜。我們假設您在第3步中從llvm.org下載了LLVM+Clang的二進位制發行版,並且你解壓存檔檔案到~/ycm_temp/llvm_root_dir (包含bin,lib,include 等資料夾)資料夾下。在Windows中,你可以使用7-zip從LLVM+Clang安裝程式中解壓檔案。

注意:這僅適用於已下載的LLVM二進位制包,不適用定製的LLVM!使用定製的LLVM時,要用EXTERNAL_LIBCLANG_PATH,具體見下文。

考慮到這一點,需要在ycm_build目錄下執行下列命令:

cmake -G "<generator>" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
<generator>像上面那樣取代。

現在配置檔案已經生成,編譯庫要使用下面的命令:

cmake --build . --target ycm_core --config Release
--config Release部分是針對Windows的,Unix作業系統上請忽略。

想使用系統的libclang的使用者,你要使用-DUSE_SYSTEM_LIBCLANG=ON去cmake代替-DPATH_TO_LLVM_ROOT=...標誌。

注意:我們強烈建議不要是用系統的libclang去代替上層已編譯的二進位制檔案。隨機性事件可能導致崩潰,儲存你的hassle並使用上層預置的libclang。

你也可以強制使用自定義的libclang庫,用-DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so標誌(在Mac上,庫的字尾是.dylib)。此外,這個標誌可以代替其他的標誌,如果你從原始碼編譯的LLVM,這個標誌將被使用。

如果編譯帶有clang支援,執行cmake命令會將libclang.[so|dylib|dll]檔案放置在YouCompleteMe/third_party/ycmd目錄下(YCM需要它在那裡)。

5.根據需要,設定對其他語言的支援:

  • C#:非Windows平臺要安裝Mono。Windows平臺,在YouCompleteMe/third_party/ycmd/third_party/OmniSharpServer目錄下執行msbuild /property:Configuration=Release。其他平臺上,用xbuild放置msbuild。Windows上,請確保構建工具在你的環境變數下。

  • Go:安裝Go並新增到你的環境變數中。在YouCompleteMe/third_party/ycmd/third_party/gocode目錄下執行go build
  • TypeScript:像快速安裝那樣,執行和npm install -gtypescript後,成功安裝Node.js and npm

  • JavaScript:安裝Node.js and npm。在YouCompleteMe/third_party/ycmd/third_party/tern_runtime目錄下執行npm install--production
  • Rust:安裝Rust。在YouCompleteMe/third_party/ycmd/third_party/racerd目錄下執行cargo build --release

這樣,就完成了。如何使用YCM請參考使用者指南部分。別忘了,如果你需要C家族語義補全,你需要提供YCM專案的編譯標誌。這些都在使用者指南里。

YCM 明確了它的預設選項,但你仍可以瞭解有什麼可用的配置。有一些有趣的選項預設是關閉的,你可能想要開啟它。