前言
本文寫于2020年10月,如果你多年后看見這篇文章,方法可能已經失效,但是請牢記,盡量下載你所處時代的最新版本的軟件,會減少很多麻煩。
擺正心態
即便按照本文操作,由于你的系統狀態和我的不一樣,你依然可能安裝失敗,這個時候你需要自己慢慢使用Google搜索尋找答案。
安裝
使用的是 全新的Ubuntu 18.04 LTS,剛剛安裝好系統,然后進入終端的root下操作。注意,系統版本非常重要!對應的是vim8和Python3.6.
注意!再次強調本教程在剛剛安裝好的Ubuntu18測試有效,如果你之前進行過其他配置,完全按照本教程操作,可能會遇到未知錯誤!這也是不可避免的!請自行解決。
1 安裝vim 和 git
這個很簡單,我們只需要輸入vim
,系統就會提示你進行安裝,再輸入第一條命令apt install vim
即可。
輸入git
按照系統提示進行安裝。
2 安裝依賴軟件
輸入命令:
sudo apt-get install build-essential cmake python-dev python3-dev
3 安裝Vundle
一款vim插件管理工具,需要使用git clone
進行安裝。
輸入命令,這里注意我們存的目標文件位置~/.vim/bundle/Vundle.vim
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
但是不建議直接這樣做,因為GitHub訪問太慢。
方法一:我們需要使用Google的Github加速插件,然后將地址
https://github.com/VundleVim/Vundle.vim.git
拿出來輸入瀏覽器地址欄中,獲得加速地址,可以使用Google瀏覽器的應用商店搜索。
還是推薦方法二,對于GitHub地址https://github.com/VundleVim/Vundle.vim.git
,我們在github.com
后面加上.cnpmjs.org
,變成https://github.com.cnpmjs.org/VundleVim/Vundle.vim.git
,然后再下載,會快很多。
此處參考:解決git clone速度慢的問題
輸入cd ~
進入家目錄,再輸入vim ~/.vimrc
進行vim配置,讓vim安裝該插件。注意,沒有.vimrc
文件也沒事,會自動創建的,如果你不會vim基本操作,請自學。
將以下內容作為.vimrc
文件的內容:
set shell=/bin/bashset nocompatible " be iMproved, required
filetype off " required" set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
然后在vim下輸入命令:PluginInstall
安裝插件,再輸入bdelete
刪除高速緩存關閉窗口,之后退出。
4 安裝YouCompleteMe
4.1 下載源文件包
下載源文件包
cd ~/.vim/bundle
git clone https://github.com/Valloric/YouCompleteMe.git
老樣子,記得在github.com
后面加上.cnpmjs.org
,加速下載,上面提及以后不再重復。
4.2 下載相關依賴
然后進入YouCompleteMe目錄下,之后再獲取最新版本的相關依賴文件。
cd ~/.vim/bundle/YouCompleteMe
git submodule update --init --recursive
此處,先不要運行第二條命令,因為直接運行會非常慢!
我們按照以下步驟做
- 運行
git submodule update --init
,這個過程需要等待一下。 - 輸入
vim .gitmodules
。
將里面所有的github.com
都加上.cnpmjs.org
,然后保存退出。 - 輸入
git submodule sync
更新子項目的url - 輸入
git submodule update --init --recursive
這個時候,如果提示
fatal: Needed a single revision Unable to find current revision in submodule path 'third_party/requests_deps/certifi'
我們需要再做一些操作,注意關注結尾的third_party/requests_deps/certifi
,你的和我的可能不一樣,請使用自己的提示完成下面的步驟。
輸入rm -rf <你顯示的結尾>
,這里我輸入rm -rf third_party/requests_deps/certifi
。
參考:git submodule update failed
然后再輸入git submodule update --init --recursive
就沒有問題了。
4.3 編譯和配置支持自動補全的語言
若使用C/C++,可以安裝C族,運行./install.py --clang-completer
;若安裝全部支持的語言,可以輸入./install.py --all
。
這里使用前者,速度較快,安裝全部用不到的話也沒必要。
完成之后,在 vim 的配置文件 ~/.vimrc 中添加一行
(在call vundle#begin() 和 call vundle#end() 之間)
call vundle#begin()
. . .
Plugin 'Valloric/YouCompleteMe'
. . .
call vundle#end()
保存,之后安裝插件,在vim下輸入:PluginInstall
,前面提及過,不再細說。
之后運行vim,提示YouCompleteMe unavailable: requires Vim 8.1.2269+
,看來還需要升級vim版本阿!。
警告! 部分用戶反應卸載vim后無法再安裝,博主目前沒有遇到類似問題,因此請謹慎卸載,可以先自行查閱直接升級vim的相關操作,或者,直接用Ubuntu20吧,vim版本應該足夠了。
- 刪除當前的所有vim版本
dpkg -l | grep vim
sudo apt-get remove vim vim-runtime vim-tiny vim-common
注意,第二條命令,是根據第一條命令的結果設置的,博主第一條命令顯示的是這4個,所以刪除這幾個。
- 安裝新的vim
sudo add-apt-repository ppa:jonathonf/vim
sudo apt-get update
sudo apt-get install vim
然后,就可以愉快使用vim了!
5 增強功能
在.vimrc
文件末尾加上:
let g:ycm_show_diagnostics_ui = 0
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_complete_in_strings=1
let g:ycm_key_invoke_completion = '<c-z>'noremap <c-z> <NOP>let g:ycm_semantic_triggers = {\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],\ 'cs,lua,javascript': ['re!\w{2}'],\ }
接下來可能還會報錯:
NoExtraConfDetected: No .ycm_extra_conf.py file detected ………………
博主這里報錯是不能找到.ycm_extra_conf.py
,因此我們需要查找一下,發現它在目錄~/.vim/bundle/YouCompleteMe/third_party/ycmd
中,因此我們需要再配置一下,加上一條
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'
保存退出,之后就可以愉快使用vim編輯C,CPP文件啦!
重要參考資料:在vim中配置最新YouCompleteMe代碼自動補全插件
6 可能的錯誤 和 其他資料
按照此教程,你大概率不會一帆風順,還會有各種問題……這里只能列出一些我見過的問題。
SyntaxError: invalid syntax when import vimsupport
在你的vim中運行:py3 print( __import__( 'sys' ).version )
,默認python版本必須大于3.5
,這個很難改好,會出現各種問題,直接按照Ubuntu 18就不會有這個問題了,更低版本的Ubuntu是默認3.5.
參考資料
- vim 按照插件
如何在 Linux 上使用 Vundle 管理 Vim 插件 - 子模塊git clone加速問題
github克隆項目中的子模塊submodule時遇到的問題
徹底解決git clone以及 recursive慢的問題
核心問題總結
工具鏈的版本匹配
對于YouCompleteMe來說,它以及它依賴的一整套工具鏈,對軟件版本有很高要求,一點點不匹配就不能正常運行,因此,需要充分把握這一點。
- Python3 >= 3.6
- Vim >= 8.1
- 各種依賴……
總之,這是個與時俱進的插件了。
Github快速下載
文章中已經提及了方法,不再說明。但是這一點很重要,因為在中國下載太慢了,效率極低,使用一些策略可以將下載效率提高10倍以上。
不僅僅是當前文件下載,還有其相關依賴下載,也都需要提速,不過依賴的主體文件下載,不知道如何提速,該url應該隱藏在某個文件里,回頭找一找。