一、Vundle(插件管理工具)
1、sudo apt-get install vim git
2、git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
3、vim ~/.vimrc
set nocompatible " 这是必需的
filetype off " 这是必需的
" 你在此设置运行时路径
set rtp+=~/.vim/bundle/Vundle.vim
" vundle初始化
call vundle#begin()
" 这应该始终是第一个
Plugin 'gmarik/Vundle.vim'
"--------------------------------------------------------------------
"每个插件都应该在这一行之前
"--------------------------------------------------------------------
call vundle#end() " 这是必需的
filetype plugin indent on " 这是必需的
4、vim
:PluginInstall
二、ctags工具
1、sudo apt-get install ctags
2、使用之前 ctags -R .
ctags -R --c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+liaS --extra=+q
为某些源码生成tags文件,使用命令: ctags filename.c filename1.c file.h
3、在vim中 :set tags=tags
ctrl + ]:跳转到光标处的函数或者变量的定义所在的地方
ctrl + T/O:返回
4、使用说明
在vim打开源码时,指定tags文件,才可正常使用,通常手动指定,在vim命令行输入:
:set tags=./tags(当前路径下的tags文件),若要引用多个不同目录的tags文件,可以用逗号隔开
或者,设置 ~/.vimrc,加入一行,则不用手动设置tags路径:
set tags=~/path/tags
若要加入系统函数或全局变量的tag标签,则需执行:
ctags -I __THROW –file-scope=yes –langmap=c:+.h –languages=c,c++ –links=yes –c-kinds=+p --fields=+S -R -f ~/.vim/systags /usr/include /usr/local/include
并且在~/.vimrc中添加(亦可用上面描述的手动加入的方式):
set tags+=~/.vim/systags
这样,便可以享受系统库函数名补全、原型预览等功能了。
三、cscope工具
查找函数在哪里被调用过或标签在哪些地方出现过
1、sudo apt-get install cscope
2、使用之前 cscope -Rbq
s:查找C语言符号,即查找函数名、宏、枚举值等出现的地方(*)
g:查找函数名、宏、枚举等定义的地方,类似ctags所提供的功能
d:查找本函数调用的函数
c:查找调用本函数的函数(*)
t:查找指定的字符串(*)
e:查找egrep模式,相当于egrep功能
f:查找并打开文件
i:查找包含本文件的文件
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
:set cscopequickfix=s-,c-,d-,i-,t-,e-
"nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
"F5查找C符号,F6查找字符串,F7查找函数谁调用了
nmap <silent> <F5> :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <silent> <F6> :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <silent> <F7> :cs find c <C-R>=expand("<cword>")<CR><CR>
四、Tagbar(源码大纲)
1、vim ~/.vimrc
Plugin 'majutsushi/tagbar' " Tag bar
2、vim
:PluginInstall
3、vim ~/.vimrc
" Tagbar
autocmd BufReadPost *.cpp,*.c,*.h,*.cc,*.cxx call tagbar#autoopen()
nmap <silent> <F9> :TagbarToggle<CR> "按F9即可打开tagbar界面
let g:tagbar_ctags_bin = 'ctags' "tagbar以来ctags插件
let g:tagbar_left = 1 "让tagbar在页面左侧显示,默认右边
let g:tagbar_width = 30 "设置tagbar的宽度为30列,默认40
let g:tagbar_autofocus = 1 "这是tagbar一打开,光标即在tagbar页面内,默认在vim打开的文件内
let g:tagbar_sort = 0 "设置标签不排序,默认排序
五、NerdTree(文件浏览)
1、vim ~/.vimrc
Plugin 'scrooloose/nerdtree'
2、vim
:PluginInstall
3、vim ~/.vimrc
autocmd StdinReadPre * let s:std_in=1
autocmd Vimenter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let NERDTreeWinSize=30
let NERDTreeShowLineNumbers=1
let NERDTreeAutoCenter=1
let NERDTreeShowBookmarks=1
"第一条是说使用F2键快速调出和隐藏它;
"第二条是关闭vim时,如果打开的文件除了NERDTree没有其他文件时,它自动关闭,减少多次按:q!。
map <F2> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif
"如果想打开vim时自动打开NERDTree,可以如下设定
autocmd vimenter * NERDTree
六、ALE(语法检查)
1、vim ~/.vimrc
Plugin 'w0rp/ale'
2、vim
:PluginInstall
3、vim ~/.vimrc
let g:ale_sign_column_always = 1
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
let g:ale_echo_msg_format = '[%linter%] %code %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_lint_on_enter = 0
"nmap <silent> <C-k> <Plug>(ale_previous_wrap)
"nmap <silent> <C-j> <Plug>(ale_next_wrap)
七、YouCompleteMe(自动补全)
1、cd ~/.vim/bundle
2、git clone https://github.com/Valloric/YouCompleteMe.git
3、cd ~/.vim/bundle/YouCompleteMe
4、
5、./install.py --clang-completer "./install.py --all
6、cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
7、vim ~/.vimrc
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
八、vim-gutentags(自动索引)
1、vim ~/.vimrc
Plugin 'ludovicchabant/vim-gutentags'
2、vim
:PluginInstall
3、vim ~/.vimrc
" gutentags搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归 "
let g:gutentags_project_root = ['.root', '.svn', '.git', '.project']
" 配置 ctags 的参数 "
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+pxI']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
九、others
set nu!
syntax enable
syntax on
colorscheme desert
:set autowrite " 自动保存