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 命令:
vundle常用命令:
+ BundleInstall -安装列表中全部插件
+ BundleInstall! -更新列表中全部插件
+ BundleClean -清除列表中没有的插件
+ BundleSearch foo -查找foo插件
+ BundleSearch -列出所有可用的插件,可以在列表中搜索、安装
+ BundleList -列举出列表中(.vimrc中)配置的所有插件
3.使用ctags
ctags可以对代码中的函数,全局变量,宏定义,结构体(类)建立关键字索引,以实现快速查找。使用时,需要先在源码目录下生成tags文件,然后把tags文件路径加到vim的tags变量里
vim中执行,
另外,为了查看系统函数需要生成系统函数的tags,命令如下:
生成的tag文件~/.vim/systags,然后添加到tag路径
设置好tag后,就可以使用ctrl+]来跳转了.
tags有一个小技巧,在vimrc文件中set tags=tags; (注意有分号),在vi中使用定位快捷键时会先在当前目录中查找tags文件,找不到的话,就会到父目录中找,依次类推.
ctags常用快捷键和命令:
4.插件taglist
taglist用于显示打开的文件中定义的全局变量、宏、函数命令,
常用命令:
:TlistOpen 打开taglist窗口
:TlistClose 关闭taglist窗口
:TlistToggle 在打开和关闭间切换,可以定义快捷键,如
taglist窗口中的快捷键:
: 跳到光标下tag所定义的位置
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中的配置如下:
命令:
+ :bn 打开下一个buf
+ :bp 打开前一个buf
+ :b n是数字,第n个buf
7.插件OmniCppComplete
8.插件supertab
9.使用cscope
ctags只能跳转到函数的定义处,cscope可以查找函数被调用的地方;
安装.
如果没有安装cscope,需要先安装,下载源码Cscope的主页,三步安装。
生成索引数据库
在要代码目录下执行
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 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中增加如下设置:
参考:
使用vundle管理插件
ctags 生成系统头文件、第三方库头文件的 tag
vi/vim使用进阶: 使用taglist插件
NERDTree 快捷键辑录
Cscope的使用
vi/vim使用进阶: 程序员的利器 – cscope
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 | 列出标签列表 |
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
相关文章推荐
- JAVA接口
- SYS_REFCURSOR
- CCNA之路-1-静态路由的配置
- 上网访问速度慢的原因(计算机网络常识)
- 《深度探索C++对象模型》读书笔记——第一章(关于对象)
- 四大配置管理工具测评手记
- 上网访问速度慢的原因(计算机网络常识)
- 字符串变整数,atoi()
- java关键字this与super
- 图像上传
- linux-Centos 7下bond与vlan技术的结合
- 再次阅读《精通CSS-高级Web标准解决方案(第二版)》
- Apache三种多路处理模块
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- 黑马程序员-day21-File类
- 黑马程序员-day20-字节流
- 对路径“C:\inetpub\wwwroot\Test\Temper\”的访问被拒绝 【已解决】
- WebGL实现HTML5的3D贪吃蛇游戏
- 子字符串查找
- JDK自带方法实现RSA非对称加密