一、前言
各種IDE工具有代碼提示以及可以方便切換到各個文件,所以也想在VIM上實現近似的功能。因爲目前Linux開發都是在遠程連接服務器進行開發,常用的遠程連接工具:xshell、putty、MobaXterm等。雖然大部分Linux開發還是使用純VIM開發,但是對於提高效率來說,安裝需要的插件,仍然是有必要的。
本文主要講述常用插件的安裝:Bundle、YouCompleteMe、nerdtree、pathogen、tagbar、a.vim等。
二、安裝過程
1、安裝Bundle插件——插件管理
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/plugin/Vundle.vim
安裝後,可以使用Plugin Install、PluginList、PluginSearch,用於插件安裝等;
2、安裝a.vim——用於文件切換
官網地址:https://www.vim.org/scripts/script.php?script_id=31,下載後的a.vim直接~/.vim/plugin/中,即可實現頭文件和源文件進行切換;
操作:
:A 頭文件/源文件切換
:AS 分割窗後並切換頭/源文件(切割爲上下兩個窗口)
:AV 垂直切割窗口後切換頭/源文件(切割爲左右兩個窗口)
:AT 新建Vim標籤式窗口後切換
:AN 在多個匹配文件間循環切換,將光標所在處單詞作爲文件名打開
:IH 切換至光標所在文件
:IHS 分割窗口後切換至光標所在文件(指將光標所在處單詞作爲文件名打開)
:IHV 垂直分割窗口後切換
:IHT 新建標籤式窗口後切換
:IHN 在多個匹配文件間循環切換
3、YouCompleteMe的安裝(重頭戲)——實現補全,代碼檢查
(1) 安裝基礎環境:
sudo apt-get install vim ctags libpython3.6-dev
(2) 安裝apt-vim
git clone https://raw.githubusercontent.com/egalpin/apt-vim,執行sh install.sh,執行成功後,會安裝pathogen、tagbar兩個插件;
apt安裝於~/.vimpkg/bin/apt-vim 目錄,執行source ~/.bashrc環境變量中可進行調用。
(3) 安裝nerdtree文件列表
apt-vim install -y https://github.com/scrooloose/nerdtree.git
(4) 安裝YouCompleteMe插件
apt-vim install -y https://github.com/Valloric/YouCompleteMe.git
cd ~/.vim/bundle/YouCompleMe/
安裝各種第三方庫,更新子模塊;git submodule update --init --recursive
(5) 對於64位系統,可以直接使用./install.py --clang-completer進行YCM插件的安裝;
(6)對於32位系統而言,由於直接使用./install.py --clang-completer提示Clang.so庫無法正確鏈接( "libclang-${CLANG_VERSION}-i386-unknown-freebsd11"下載是有問題的),所以使用apt install clang-10進行相關包的下載,將/usr/lib/i386-linux-gnu/libclang-10.so替換lib/libclang.so.10文件,該lib位置放於~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp該目錄,修改如下
![build.py](https://img-blog.csdnimg.cn/2020070414565680.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ZlbmdfODA3MQ==,size_16,color_FFFFFF,t_70
(6)最終顯示如下,無報錯則表示安裝成功
三、.vimrc配置(相關插件配置)
"Vundle install
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
Plugin 'bundle/nerdtree'
Plugin 'bundle/tagbar'
Plugin 'bundle/pathogen'
Plugin 'bundle/YouCompleteMe'
call vundle#end()
"Tagbar
let g:tagbar_width=35 "寬度
let g:tagbar_ctags_bin='/usr/bin/ctags' "設置tagbar使用的ctags的插件
let g:tagbar_right=1 "位置在右側
let g:tagbar_autofocus=0 "是否自動聚焦
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "打開文件自動打開tagbar
nmap <F6> :TagbarToggle<CR> "快捷鍵
" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
""修改樹的顯示圖標
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
"""窗口是否顯示行號
let g:NERDTreeShowLineNumbers=1
""不顯示隱藏文件
let NERDTreeShowHidden=1
" Automatically open a NERDTree if no files where specified
autocmd vimenter * if !argc() | NERDTree | endif
" Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" Open a NERDTree
nmap <F5> :NERDTreeToggle<cr>
" #####YouCompleteMe Configure
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf=0 "關閉加載.ycm_extra_conf.py提示`
"YouCompleteMe "自動開啓語義補全
let g:ycm_seed_identifiers_with_syntax = 1
"在註釋中也開啓補全
let g:ycm_complete_in_comments = 1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"字符串中也開啓補全
let g:ycm_complete_in_strings = 1
let g:ycm_collect_identifiers_from_tags_files = 1
"開啓基於tag的補全,可以在這之後添加需要的標籤路徑
let g:ycm_collect_identifiers_from_tags_files = 1 "開始補全的字符數
let g:ycm_min_num_of_chars_for_completion = 2
"補全後自動關閉預覽窗口
let g:ycm_autoclose_preview_window_after_completion = 1
"禁止緩存匹配項,每次都重新生成匹配項
let g:ycm_cache_omnifunc=0
"回車即選中當前項
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
"離開插入模式後自動關閉預覽窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"語法關鍵字補全
let g:ycm_seed_identifiers_with_syntax = 1
"在實現和聲明之間跳轉,並分屏打開
let g:ycm_goto_buffer_command = 'horizontal-split'
"nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳轉到定義處
"nnoremap <Leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>
nmap <F12> :YcmCompleter GoToDefinitionElseDeclaration<CR>
nnoremap <Leader>j :YcmCompleter GoToInclude<CR>
execute pathogen#infect()
call pathogen#helptags()
備註:若YCM比對是顏色比較亮色,導致無法代碼查看,可以更換主題,colorscheme industry
參考鏈接:
https://blog.csdn.net/qq_37968132/article/details/79856758
https://www.cnblogs.com/jhssd/p/6803689.html
以下是新的個人博客的地址:http://106.53.224.102:8080/wordpress-zh/feng_8071/http://106.53.224.102:8080/wordpress-zh/feng_8071/vim使用常見插件安裝//