您的位置:首页 > 其它

vim环境搭建:安装vimgdb、使用ctags

2015-11-24 00:27 453 查看
1.安装vimgdb

vim中无法使用gdb调试,安装vimgdb(vim的gdb补丁版),可以直接在vim中用gdb调试,参考 vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

2.使用Vundle管理插件

vim很多功能需要使用插件,使用Vundle方便管理插件

安装Vundle:建立 目录~/.vim/bundle,以后Vundle自动下载的插件都保存在这里。然后,进入 Bundle 目录,使用 git clone 命令:
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
下载Vundle,最后在~/.vimrc中添加如下配置:

1 #using vundle need filetype off, and set nocompatible
2 filetype off
3 set nocompatible
4 set rtp+=~/.vim/bundle/vundle
5 call vundle#rc()
6
7 Bundle 'gmarik/vundle'
8
9 "my bundles here
10 Bundle 'altercation/vim-colors-solarized'
11 Bundle 'taglist.vim'
12 Bundle 'The-NERD-TREE'
13 Bundle 'minibufexpl.vim'
14 Bundle 'OmniCppComplete'
15 "bundles end


vundle常用命令:

+ BundleInstall -安装列表中全部插件

+ BundleInstall! -更新列表中全部插件

+ BundleClean -清除列表中没有的插件

+ BundleSearch foo -查找foo插件

+ BundleSearch -列出所有可用的插件,可以在列表中搜索、安装

+ BundleList -列举出列表中(.vimrc中)配置的所有插件

3.使用ctags

ctags可以对代码中的函数,全局变量,宏定义,结构体(类)建立关键字索引,以实现快速查找。使用时,需要先在源码目录下生成tags文件,然后把tags文件路径加到vim的tags变量里
set tags=~/path/tags


[read_ng@wukong src]$ ctags -R --c-kinds=+px --fields=+iaS --extra=+q  *.c *.h


vim中执行,
set tags=~/path/tags
或者写在.vimrc文件里

另外,为了查看系统函数需要生成系统函数的tags,命令如下:

ctags -I  __THROW -I __attribute_pure__ -I __nonnull -I __attribute__ -I __attribute_malloc__ -I __wur --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --f    ields=+iaS --extra=+q  -f ~/.vim/systags /usr/include/* /usr/include/sys/* /usr/include/bits/*  /usr/include/netinet/* /usr/include/arpa/*


生成的tag文件~/.vim/systags,然后添加到tag路径

设置好tag后,就可以使用ctrl+]来跳转了.

tags有一个小技巧,在vimrc文件中set tags=tags; (注意有分号),在vi中使用定位快捷键时会先在当前目录中查找tags文件,找不到的话,就会到父目录中找,依次类推.

ctags常用快捷键和命令:

命令用途
ctrl+]跳转到光标所在关键字的第一处标签
g ctrl+]如果有多个标签会列出来供选择,如果只有一个,则直接跳转
:tag {keyword}跳转到keyword的第一处标签
:tjump {keyword}如果有多个标签会列出来供选择,如果只有一个,则直接跳转
:pop 或者只ctrl+t反向遍历标签位置
:tag正向遍历标签位置
:tnext跳到下一个匹配的标签
:tprev跳到上一个匹配的标签
:tfirst跳到第一个匹配的标签
:tlast跳到最后一个匹配的标签
:tselect列出标签列表
4.插件taglist

taglist用于显示打开的文件中定义的全局变量、宏、函数命令,

常用命令:

:TlistOpen 打开taglist窗口

:TlistClose 关闭taglist窗口

:TlistToggle 在打开和关闭间切换,可以定义快捷键,如
map <C-F12> :TlistToggle<cr>


taglist窗口中的快捷键:

: 跳到光标下tag所定义的位置

+
打开一个折叠,同zo

-
将tag折叠起来,同zc

*
打开所有的折叠,同zR

=
将所有tag折叠起来,同zM

o 在新窗口下打开tag所在的位置

在窗口底部显示光标下tag的原型定义

[[跳到前一个文件的tag处

]]跳到后一个文件的tag处

在.vimrc中配置let Tlist_Use_Right_Window = 1可以使taglist窗口显示在右侧

5.插件The-NERD-tree

P 跳到根结点

p 跳到父结点

展开或者合拢目录、或者跳到当前文件

o 在已有窗口中打开文件、目录或书签,并跳到该窗口

go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口

i split 一个新窗口打开选中文件,并跳到该窗口

gi split 一个新窗口打开选中文件,但不跳到该窗口

s vsplit 一个新窗口打开选中文件,并跳到该窗口

gs vsplit 一个新 窗口打开选中文件,但不跳到该窗口

x 合拢选中结点的父目录

X 合拢选中结点下的所有目录

6.插件mimibufferexplore

mimibufferexplore会在其窗口中显示buf中的文件列表,

.vimrc中的配置如下:

$HOME/.vimrc 中添加如下配置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1


命令:

+ :bn 打开下一个buf

+ :bp 打开前一个buf

+ :b n是数字,第n个buf

7.插件OmniCppComplete

8.插件supertab

9.使用cscope

ctags只能跳转到函数的定义处,cscope可以查找函数被调用的地方;

安装.

如果没有安装cscope,需要先安装,下载源码Cscope的主页,三步安装。

生成索引数据库

在要代码目录下执行
cscope -Rbq
,会生成三个文件:cscope.out, cscope.in.out, cscope.po.out;cscope在生成数据库时,在项目目录中未找到的头文件,会自动到/usr/include目录中查找。如果你想阻止它这样做,使用”-k“选项。

cscope缺省只解析C文件(.c和.h)、lex文件(.l)和yacc文件(.y),如果需要为其它文件生成索引,需要把所有需要解析的文件添加到cscope.files中,当cscope发现在当前目录中存在cscope.files时,就会为cscope.files中列出的所有文件生成索引数据库,注意cscope.files需要保存文件的完整路径,防止在其它文件路径失效。

下表中列出了cscope的常用选项:

-R: 在生成索引文件时,搜索子目录树中的代码

-b: 只生成索引文件,不进入cscope的界面

-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

-k: 在生成索引文件时,不搜索/usr/include目录

-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用”–“,表示由标准输入获得文件列表。

使用

首先在vim中添加数据库
cs add cscope.out
;

:cs show可以显示cscope的连接的数据库,:cs kill num断开编号为num的连接;

查找命令:

:cs find {querytype} {name}

其中,{querytype} 取如下值:

s —— 查找这个C符号

g —— 查找这个定义

d —— 查找被这个函数调用的函数(们)

c —— 查找调用这个函数的函数(们)

t —— 查找这个字符串

e —— 查找这个egrep匹配模式

f —— 查找这个文件

i —— 查找#include这个文件的文件(们)

选项设置

csprg(cscopecscopeprg)选项用于设置cscope程序的位置。

cscopecscopequickfix设定是否使用quickfix窗口来显示cscope的结果,

执行set cscopequickfix=s-,c-,d-,i-,t-,e-后,可以使用quickfix的Ctrl-n / Ctrl-P 跳转到后一项和前一项纪录,详情请”:help cscopequickfix“;

cst(cscopecscopetag),如果你想vim同时搜索tag文件以及cscope数据库;

csto(cscopecscopetagorder)选项决定是先查找tag文件还是先查找cscope数据库。设置为0则先查找cscope数据库,设置为1先查找tag文件。我通常设置为1,因为在tag文件中查找到的结果,会把最佳匹配列在第一位。

可以在 .vimrc中增加如下设置:

" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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


参考:

使用vundle管理插件

ctags 生成系统头文件、第三方库头文件的 tag

vi/vim使用进阶: 使用taglist插件

NERDTree 快捷键辑录

Cscope的使用

vi/vim使用进阶: 程序员的利器 – cscope
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: