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"文件,以对工程做单独设置。

posted on 2016-04-23 14:36  KcMeterCEC  阅读(5115)  评论(1编辑  收藏  举报

导航