由於個人強迫症的原因,之前的ycm是通過vundle來管理的,這次想更新一下ycm發現問題太多,於是就重新裝了個Ubuntu虛擬機,用vim-plug來進行管理ycm及其他插件。
首先要換一下Ubuntu的默認源,換成國內的阿里源,提高下載速度

1、安裝gcc
裝好虛擬機之后發現沒有gcc,於是下了最新的gcc源碼自己編譯安裝:https://gcc.gnu.org/mirrors.html 選擇一個鏡像站下載源碼包:gcc-9.2.0.tar.xz,解壓后進入解壓后的目錄
1 cd gcc-9.2.0/ 2 ./contrib/download_prerequisites
下載預裝環境包發現特別慢,然后發現直接去網址下載好 gmp、mpc、mpfr、isl 這四個包然后放在 gcc-9.2.0/ 的目錄下再執行download_prerequisites也是可以的:https://gcc.gnu.org/pub/gcc/infrastructure/
這里要注意下載包的版本為最新版本,比如我當時下載的版本為gmp-6.1.0、mpc-1.0.3、mpfr-3.1.4、isl-0.18
在后面的安裝過程中發現還需要gcc和make進行編譯,所以通過apt install來進行安裝
1 sudo apt install make 2 sudo apt install gcc
然后在 gcc-9.2.0/ 目錄下創建一個編譯目錄進行存放編譯文件,進入目錄配置
1 mkdir gcc-build 2 cd gcc-build 3 ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
開始編譯,然后編譯過程中出現了兩個錯誤,第一個類似下圖
1 configure:4284: $? = 0 2 configure:4273: gcc -V >&5 3 gcc: error: unrecognized command line option '-V'
百度加谷歌后發現問題解決方法為修改configure文件的4353行附近幾行代碼,對比圖如下
修改前
修改后
cat conftest.er1 >&5 rm -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 if test $ac_status = 0; then break fi
第二個問題則是因為我虛擬機分配內存及cpu數量不夠引起的,如下圖

這只需要在make的時候不用 -j4 選項就行了,只不過時間會久一點
1 sudo make -j2 2 sudo make install
至此GCC-9.2.0安裝完成;
參考博文鏈接:https://blog.csdn.net/yaoyutian/article/details/90761619
2、安裝git-2.25.0
強迫症把git也下載源碼重新編譯安裝了,結果在后面安裝vim-plug時出現了一個錯誤
1 fatal: Unable to find remote helper for 'https'
百度發現原來是少了一個依賴庫,執行命令
1 sudo apt install libcurl4-openssl-dev
參考博文鏈接:https://stackoverflow.com/questions/8329485/unable-to-find-remote-helper-for-https-during-git-clone
3、安裝python-3.8.1
直接去python官網下載源碼:https://www.python.org/downloads/source/
配置前安裝一些必須的庫,configure時可以看到哪些庫沒有選擇性安裝之后再進行編譯
另外python3.8的ssl庫好像openssl是不能用的,改用libressl去官網下載源碼安裝:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/

./configure --enable-optimizations make make install
參考博文:https://blog.csdn.net/tanmx219/article/details/86518446
4、安裝vim-8.2使其支持python3.8
下載vim8.2源碼:https://www.vim.org/mirrors.php
解壓后在壓縮包目錄編譯安裝
1 ./configure --with-features=huge \ 2 --enable-multibyte \ 3 --enable-python3interp=yes \ 4 --with-python-config-dir=/usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu \ 5 --enable-rubyinterp=yes \ 6 --enable-perlinterp=yes \ 7 --enable-luainterp=yes \ 8 --enable-cscope \ 9 --prefix=/usr/local/vim82
參考博文:https://blog.csdn.net/weixin_34356310/article/details/93599143
5、安裝vim-plug及YCM
在命令行輸入curl命令完成vim-plug安裝
1 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ 2 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
然后安裝YCM,首先是開發工具
1 sudo apt install build-essential cmake python3-dev
然后在.vimrc里面加入幾行進行配置下載
1 call plug#begin('~/.vim/plugged') 2 Plug 'ycm-core/YouCompleteMe' 3 call plug#end()
YCM很大,而且國內與GitHub間的連接不穩定,所以這個過程可能會持續很久嘗試很多次,成功下載完之后進入目錄 ~/.vim/plugged/YouCompleteMe
1 python3 install.py --all
至此安裝完成,我還下載了vim的幾個插件和主題,詳見如下的.vimrc文件
1 call plug#begin('~/.vim/plugged') 2 Plug 'ycm-core/YouCompleteMe' 3 Plug 'cormacrelf/vim-colors-github' 4 Plug 'itchyny/lightline.vim' 5 Plug 'https://github.com/altercation/vim-colors-solarized.git' 6 Plug 'seebi/dircolors-solarized' 7 Plug 'aruhier/gnome-terminal-colors-solarized' 8 call plug#end() 9 10 11 set t_Co=256 "開啟256色支持 12 set nocompatible "高亮顯示{, }, (, ), [,]的匹配情況 13 set backspace=indent,eol,start "退格鍵設置 14 set showmatch "設置對應括號匹配高亮 15 set ts=4 "設置table鍵為四個空格 16 17 18 syntax enable 19 syntax on 20 21 set cursorline 22 set cursorcolumn 23 24 if has("autocmd") 25 au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif 26 endif "vim打開時光標跳到上次關閉時停留的位置 27 28 set showmode "關閉在左下角顯示類似INSERT的狀態欄配合lightline使用 29 set laststatus=2 "設置vim最下面兩行顯示狀態配合lightline使用 30 "set background=light 31 set background=dark 32 let g:solarized_termcolors=256 "solarized開啟256色 33 colorscheme solarized 34 "colorscheme github "colorscheme要放在call plug#end()后面,否則打開vim時會報錯 35 "let g:lightline = {'colorscheme':'solarized',} "設置lightline的顏色主題 36 37 38 "以下為YCM設置 39 let g:ycm_server_python_interpreter='/usr/local/bin/python3.8' 40 let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/.ycm_extra_conf.py' 41 42 "離開插入模式后自動關閉預覽窗口 43 autocmd InsertLeave * if pumvisible() == 0|pclose|endif 44 "讓vim補全菜單行為與一般IDE一致 45 set completeopt=longest,menu 46 47 "關閉加載.ycm_extra_conf.py提示 48 let g:ycm_confirm_extra_conf=0 49 " 開啟 YCM 基於標簽引擎 50 let g:ycm_collect_identifiers_from_tags_files=1 51 " 從第2個鍵入字符就開始羅列匹配項 52 let g:ycm_min_num_of_chars_for_completion=2 53 " 禁止緩存匹配項,每次都重新生成匹配項 54 let g:ycm_cache_omnifunc=0 55 " 語法關鍵字補全 56 let g:ycm_seed_identifiers_with_syntax=1 57 58 "通過診斷功能強制重新編譯 59 nnoremap <F5> :YcmForceCompileAndDiagnostics<CR> 60 "回車即選中當前項 61 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" 62 "在注釋輸入中也能補全 63 let g:ycm_complete_in_comments = 1 64 "在字符串輸入中也能補全 65 let g:ycm_complete_in_strings = 1 66 "注釋和字符串中的文字也會被收入補全 67 let g:ycm_collect_identifiers_from_comments_and_strings = 0
同時在.bashrc里面還需要配置來應用gnome-solarized
1 export PATH=/usr/local/vim82/bin:$PATH 2 alias vi='vim' 3 eval `dircolors ~/.vim/plugged/dircolors-solarized/dircolors.256dark` #配置終端顏色適配vim的solarized 4 export TERM=xterm-256color #設置terminal支持256色
參考博文:https://github.com/junegunn/vim-plug
https://github.com/ycm-core/YouCompleteMe#linux-64-bit
https://github.com/aruhier/gnome-terminal-colors-solarized
YCM定義聲明及頭文件跳轉似乎需要額外配置:https://github.com/ycm-core/YouCompleteMe/issues/2249
至此應該全部配置已完成,由於本文花了幾天時間寫完,可能會有遺漏差錯,問題想法交流請在下方留言
