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) 编辑 收藏 举报