VIM-->c/c++編程環境搭建


建立基本的文件及目錄結構

"建立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"文件,以對工程做單獨設置。


免責聲明!

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



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