建立基本的文件及目錄結構
"建立vim的基本設置文件 vim ~/.vimrc "建立插件目錄,所有的插件都有各自的文件夾存在.vim目錄下 mkdir ~/.vim ;讓vundle接管.vim的插件管理 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
基本設置
" 定義快捷鍵的前綴,即<Leader> let mapleader=";" "開啟文件類型檢測 filetype on "根據檢測到的類型加載不同的插件 filetype plugin on "讓配置文件的更改立即生效 autocmd BufWritePost ${MYVIMRC} source ${MYVIMRC} " 開啟實時搜索功能 set incsearch " 搜索時大小寫不敏感 set ignorecase " 高亮顯示搜索結果 set hlsearch " 關閉兼容模式 set nocompatible " vim 自身命令行模式智能補全 set wildmenu " 總是顯示狀態欄 set laststatus=2 " 顯示光標當前位置 set ruler " 開啟行號顯示 set number " 高亮顯示當前行/列 set cursorline set cursorcolumn " 開啟語法高亮功能 syntax enable " 允許用指定語法高亮配色方案替換默認方案 syntax on " 自適應不同語言的智能縮進 filetype indent on " 將制表符擴展為空格 set expandtab " 設置編輯時制表符占用空格數 set tabstop=4 " 設置格式化時制表符占用空格數 set shiftwidth=2 " 讓 vim 把連續數量的空格視為一個制表符 set softtabstop=4 " 基於縮進或語法進行代碼折疊 "set foldmethod=indent set foldmethod=syntax " 啟動 vim 時關閉折疊代碼 set nofoldenable "za,打開或關閉當前折疊;zM,關閉所有折疊;zR,打開所有折疊
" vundle 環境設置 filetype off set rtp+=~/.vim/bundle/Vundle.vim " vundle 管理的插件列表必須位於 vundle#begin() 和 vundle#end() 之間 call vundle#begin() "避免PluginClean把自己卸載了 Plugin 'VundleVim/Vundle.vim' " 插件列表結束 call vundle#end() filetype plugin indent on "安裝插件,先找到其在 github.com 的地址,再將配置信息其加入 .vimrc "中的call vundle#begin() 和 call vundle#end() 之間,最后進入 vim 執行 ":PluginInstall 便可自動安裝 "要卸載插件,先在 .vimrc 中注釋或者刪除對應插件配置信息,然后在 vim "中執行:PluginClean 便可卸載對應插件 "批量更新,只需執行:PluginUpdate
常用插件
ctags
ctags用於在編輯代碼時能夠快速定位標識符。
配置步驟如下:
1、在當前工程根目錄下使用" ctags-R ."生成一個tags文件
2、在.vimrc中加入tags路徑 "set tags=~/proj/tags"
3、加入頭文件搜尋路徑 "set path+=~/pro/include*"(可以用兩個星號"**"代替一個星號,代表遍歷的向下尋找,簡單粗暴)
使用步驟如下:
| CRTL+] | 跳轉到本文件定義處 |
| CRTL+T | 跳轉回原來位置 |
| :help helptags | 幫助文件 |
| g+CRTL+] | 跳轉到外部引用定義處 |
taglist
taglist基於ctags生成的tags文件,產生當前文件標識符列表,可以一目了然文件結構和快速跳轉。
配置步驟如下:
"實時顯示符號定義插件 Plugin 'vim-scripts/taglist.vim' """"""taglist"""""""" "ctags位於PATH目錄下,所以可以省略具體路徑 let Tlist_Ctags_Cmd='ctags' "不同時顯示多個文件的tag,只顯示當前文件的 let Tlist_Show_One_File=1 "設置taglist的寬度 let Tlist_WinWidth =40 "如果taglist窗口是最后一個窗口,則退出vim let Tlist_Exit_OnlyWindow=1 "在右側窗口中顯示taglist窗口 let Tlist_Use_Right_Window=1 "在左側窗口中顯示taglist窗口 "let Tlist_Use_Left_Windo =1 "啟動vim后自動打開 let Tlist_Auto_Open=1
使用步驟如下:
| <CR> | 跳轉光標所指定義處 |
| o | 以分隔窗口的形式跳轉到定義處 |
| :help taglist.txt | 幫助文件 |
nerdtree:
nerd類似windows下的資源瀏覽器,可以快速瀏覽並打開文件
配置步驟如下:
"瀏覽文件結構插件 Plugin 'scrooloose/nerdtree' """"""NERDTree"""""""""" "啟動vim時自動打開NERDTree autocmd VimEnter * NERDTree " 設置NERDTree子窗口寬度 let NERDTreeWinSize=32 " 設置NERDTree子窗口位置 let NERDTreeWinPos="left" " 顯示隱藏文件 let NERDTreeShowHidden=1 " NERDTree 子窗口中不顯示冗余幫助信息 let NERDTreeMinimalUI=1 " 刪除文件時自動刪除文件對應 buffer let NERDTreeAutoDeleteBuffer=1
使用步驟如下:
| u | 進入上層目錄 |
| <CR> | 打開文件或目錄 打開或折疊目錄樹 |
MiniBufExplorer:
以標簽的方式顯示vim打開的緩存,使得可以快速切換
配置步驟如下:
"同時編輯buffer插件 Plugin 'fholgado/minibufexpl.vim' " buffer 切換快捷鍵 map <leader>n :bn<CR> map <leader>p :bp<CR>
操作步驟如下:
| ;n | (;為前面定義的<leader>),循環向下切換標簽 |
| ;p | 循環向上切換標簽 |
airline
airline可以讓狀態欄顯示更多有用的信息。
配置步驟如下
"增強狀態欄 Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' """"""""airline"""""""" //總是顯示狀態欄 set laststatus=2
clang_complete
c/c++代碼補全,並且具有語法檢查
配置步驟如下:
Plugin 'Rip-Rip/clang_complete' let g:clang_complete_copen=1 let g:clang_periodic_quickfix=1 let g:clang_snippets=1 let g:clang_user_options='-std=c99' let g:clang_complete_optional_args_in_snippets=0 let g:clang_auto_select=1 let g:clang_close_preview=1 let g:clang_complete_macros=1
配置編譯器
需要在當前工程的根目錄下新建文件".clang_complete",並在其中加入常規配置
比如:
加入頭文件路徑:-I ./include
ctrlp
用於快速查找並打開文檔
配置步驟如下:
"文件查找 Plugin 'ctrlpvim/ctrlp.vim' map <leader>f :CtrlP<CR>
cscope
查看符號被調用
配置步驟如下:
#安裝cscope sudo apt-get install cscope #在.vimrc下配置 if has("cscope") set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb endif map <leader>c :cs find 3 <C-R>=expand("<cword>")<CR><CR> #在當前項目根目錄下使用 cscope -Rbq #生成cscope.out, cscope.in.out, cscope.po.out
注意:要在cscope.out所在文件夾啟動vim,否則用cscope可能會出現找不到文件的錯誤。
0或者s —— 查找這個符號
1或者g —— 查找這個定義
2或者d —— 查找被這個函數調用的函數(們)
3或者c —— 查找調用這個函數的函數(們)
4或者t —— 查找這個字符串
6或者e —— 查找這個egrep匹配模式
7或者f —— 查找這個文件
8或者i —— 查找#include這個文件的文件(們)
懶人配置(spf13)
#1.安裝帶有python以及lua的vim sudo apt install vim-nox #2.安裝spf13 curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh #3.安裝youcompleteme #在home目錄下,編輯文件“.vimrc.before.local”,並寫入 let g:spf13_bundle_groups=['general','youcompleteme','programming','misc'] #4.退出后,重新啟動vim,並運行命令 :BundleInstall # 也可以在.vim/bundle下使用git拷貝 git clone https://github.com/Valloric/YouCompleteMe #5.之后按照提示,反復安裝需要的第三方包 #6.進行編譯 ./install.py --clang-completer #7.在.vimrc.local中加入 let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' let g:ycm_confirm_extra_conf=0
注意:
需要在當前工程文件的根目錄拷貝一份".ycm_extra_conf.py"文件,以對工程做單獨設置。
