Vim插件YouCompleteMe安裝記錄(號稱最難裝的Vim插件?)


使用 PulginInstall 安裝就不要想了,如果你沒有梯子的話

自己的 ssr 被封,使用的同事的 ss,但是同事設置的加密方式在 linux 上的 ss 應用不支持...

 

好吧,直接上過程

1. 首先先獲取 YouCompleteMe 的代碼

cd ~/.vim/bundle

# 拉取 YouCompleteMe 項目代碼
git clone https://github.com/ycm-core/YouCompleteMe.git

# 進入目錄
cd YouCompleteMe

# 安裝子模塊
git submodule update --init --recursive

這里安裝子模塊會出現

fatal: unable to access 'https://go.googlesource.com/tools/': Failed to connect to go.googlesource.com port 443: 連接超時
fatal: 無法克隆 'https://go.googlesource.com/tools' 到子模組路徑 '/home/zyj/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools'

原因 go.googlesource.com 域名國內無法直接訪問,這時候根據 后面的路徑  /home/zyj/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools 來知道該模塊是要放這個路徑下的

到 github 上找到該模塊下載到該路徑

cd ~/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x

git clone https://github.com/golang/tools.git

回到 YouComplateMe 目錄繼續安裝其他子模塊

cd ~/.vim/bundle/YouCompleteMe

# 繼續子模塊的安裝
git submodule update --init --recursive

 

2. 去一個你喜歡的目錄,例如用戶主目錄

cd ~

# 創建一個目錄用來存放接下來要編譯的代碼的目錄
mkdir ~/.ycm_build

# 進入目錄
cd ~/.ycm_build

# 編譯輸出到當前目錄(.ycm_build)
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

2.1 如果需要實用 C 語言家族的相關功能(我這里系統自帶 llvm 3.8、clang 3.8、libclang 沒有、libboost-all-dev 沒有),不需要則直接跳過 2.1

sudo apt install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev

2.2 編譯 YouComplateMe

# 跳過了 2.1 執行
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

# 執行了 2.1 請執行
cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

可以看到 ~/.ycm_build 目錄下結構( 我沒有跳過 2.1,如果你跳過了說不定有不一樣的,只要編譯過程中沒有報錯就沒有問題 )

# zsh 下 l 等於 bash 下的 ls -al
l ~/.ycm_build 總用量 72K drwxr-xr-x 5 zyj zyj 4.0K 7月 18 19:00 . drwxr-xr-x 46 zyj zyj 4.0K 7月 18 19:35 .. drwxr-xr-x 3 zyj zyj 4.0K 7月 18 19:00 BoostParts -rw-r--r-- 1 zyj zyj 18K 7月 18 19:00 CMakeCache.txt drwxr-xr-x 4 zyj zyj 4.0K 7月 18 19:03 CMakeFiles -rw-r--r-- 1 zyj zyj 1.6K 7月 18 19:00 cmake_install.cmake -rw-r--r-- 1 zyj zyj 19K 7月 18 19:00 compile_commands.json -rw-r--r-- 1 zyj zyj 4.1K 7月 18 19:00 Makefile drwxr-xr-x 3 zyj zyj 4.0K 7月 18 19:00 ycm

2.3 上面 2.2 只是構建了中間編譯,下面執行最終編譯

# 如果你不是 window 系統,可以將 --config Release 去掉
cmake --build . --target ycm_core --config Release

編譯過程如下:

[  4%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Candidate.cpp.o
[  8%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CandidateRepository.cpp.o
[ 12%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Character.cpp.o
[ 16%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CharacterRepository.cpp.o
[ 20%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/ClangCompleter.cpp.o
[ 24%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/ClangHelpers.cpp.o
[ 28%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/ClangUtils.cpp.o
[ 32%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/CompilationDatabase.cpp.o
[ 36%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/CompletionData.cpp.o
[ 40%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/Documentation.cpp.o
[ 44%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/Range.cpp.o
[ 48%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/TranslationUnit.cpp.o
[ 52%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ClangCompleter/TranslationUnitStore.cpp.o
[ 56%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CodePoint.cpp.o
[ 60%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CodePointRepository.cpp.o
[ 64%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierCompleter.cpp.o
[ 68%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierDatabase.cpp.o
[ 72%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierUtils.cpp.o
[ 76%] Building CXX object ycm/CMakeFiles/ycm_core.dir/PythonSupport.cpp.o
[ 80%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Result.cpp.o
[ 84%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Utils.cpp.o
[ 88%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Word.cpp.o
[ 92%] Building CXX object ycm/CMakeFiles/ycm_core.dir/versioning.cpp.o
[ 96%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ycm_core.cpp.o
[100%] Linking CXX shared library /home/zyj/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_core.so
[100%] Built target ycm_core

隨后講編譯后文件放到你想要放入的目錄

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

隨后在將 python 和 寫入到 ~/.vimrc 中,在文件中位置你隨意就好

let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

然后嘗試寫個文件吧

vim hello.c

# 報了如下錯誤,但是按任意鍵后依然進入編輯器了,但是 ycm 並不生效
YouCompleteMe unavailable: requires Vim compiled with Python (2.7.1+ or 3.4+) support.
YouCompleteMe unavailable: unable to load Python.

在 YouComplate 的 github issue 上找到了解決方法,原理我也不知道

sudo apt install vim-gtk 

隨后就好了,再次進入編輯沒有報錯提示,YCM 也正常生效了

現在,愉快的開始你的代碼吧!

 

參考:https://www.jianshu.com/p/d908ce81017a?nomobile=yes 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM