vi中结合ctag查找函数声明
来源:互联网 发布:现代远程网络教育 编辑:程序博客网 时间:2024/04/29 17:44
本人以前做windows方面开发,在windows下面写代码大多依靠功能强大的集成开发环境IDE,如微软的Visual studio 系列,IBM的Eclipse, Borland的JBuilder,Delphi等等。现在突然转到Linux下,使用vi的感觉很不自在,比如一个*.c文件中引入一大堆的.h文件, 在这个*.c文件中,使用的某个函数function(param1,param2),不知道是哪个文件中声明的。此时如果是在windows平台下,使 用任何一款IDE都能很方便的跳转到函数原型处,但在Linux下就不是那样的方便了,此时虽然也可以使用grep,但还是有点烦人。
请教同事,他们用的是Ctag,从网上下载exuberant-ctags,安装后,首先,在源码根目录处建立tags文件,指令如下:Ctag -R
此时在当前目录下就创建了一个叫tags的文件。
第二.使用vi打开*.c文件,如果想查看function(param1,param2)在多少地方引用了或者在什么地方声明的,可将光标移到上说的函 数处,在vi的命令符状态输入:tag function(或者直接按 CTL+}),vi将跳转到找到第一个function的*.c文件或*.h文件中。
第三.如想看看到底有多少文件引用了该函数,可在vi命令符状态输入:ts,就可以看见有多少地方使用了该函数。
第四.按CTL+T键将返回到原来地方。
vi+indent+ctag编辑c
vim结合ctag,indent是比较好的用于编辑,查看c语言源程序的方法。
ctag完成文件间元素交叉关联。
ctag -R *
:ta 标志符
ctrl+]
ctrl+o
ctrl+t
vi -t 标志符
indent为源代码进行格式化。
:%!indent
说说在fedora上使用ctags和cscope看代码
我装的fedora6上的vim版本是7.0,带有 ctags-5.6和 cscope-15.5的支持。我选择了工作机使用linux fedora6,系统自带的word和看pdf文件的软件都有,收发邮件的软件也有,挺方便的,好用,就是看代码的软件需要自己配一下,麻烦一点,不过配 好了以后从速度和使用习惯上比sourceinsight好使。参考了网上一些人的经验,实践了一下,写这个文档总结也许对想了解了解ctags和 cscope的人有帮助。
有很多程序员在linux上习惯使用vi编辑器,也有一些人喜欢使用emacs,不过我个人还是倾向于vi,其实用惯了vi就不喜欢用 windows上的编辑器了,其实原因很简单:使用键盘完成查找和替换比用鼠标准确和快,而vi都使用键盘操作实现功能。目前vim是类似于vi的编辑 器,它是开源项目而且功能更多,而ctags和 cscope就是它的插件,下面针对vim 来谈谈配置使用ctags 和cscope看代码。
1。需要下载安装
taglist是vim的插件,用来在屏幕左边开窗口显示代码的全局变量、函数名称
下载地址:http://www.vim.org/scripts/script.php?script_id=273
我下载的是taglist-43.zip
安装的方法是将这个包在/usr/share/vim/vim70下展开
2。对应需要看的代码生成cscope的数据库,这个过程也叫训练
我需要看的代码有三部分一部分是linux内核,另外两个部分是库和应用层代码。
Linux内核代码针对我需要的部分整理出数据库,而不相关的部分不参加整理
先建路径:
mkdir $HOME/readcode
mkdir $HOME/readcode/cscope-kernel
mkdir $HOME/readcode/cscope-app
进入路径:
cd readcode
建立生成cscope 数据库的文件文件名是create-kernel.sh
LNX=$HOME/build/linux-2.4.22
find $LNX /
-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o /
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" -prune -o /
-path "$LNX/tmp*" -prune -o /
-path "$LNX/Documentation*" -prune -o /
-path "$LNX/scripts*" -prune -o /
-name "*.[chxsS]" -print >$HOME/readcode/cscope-kernel/cscope.files
cd $HOME/readcode/cscope-kernel
cscope -b -q -k
cd $HOME/readcode
执行 source create-kernel.sh
会在目录$HOME/readcode/cscope-kernel下生成cscope.out文件
对应用层代码生成cscope的数据库要简单地多
它的生成脚本:
APP=$HOME/build/App
find $APP -name "*.cpp" -print >$HOME/readcode/cscope-app/cscope.files
find $APP -name "*.[ch]" -print >>$HOME/readcode/cscope-app/cscope.files
cd $HOME/readcode/cscope-app
cscope -b -q -k
cd $HOME/readcode
应用程序代码有一些是c++的,所以将.cpp格式的代码列出来生成cscope数据库
3。配置.vimrc文件
.vimrc内容如下:
set cst
set csto=1
set cscopequickfix=s-,c-,d-,i-,t-,e-,f-
cs add /home/yangxl/readcode/cscope-kernel/cscope.out
cs add /home/yangxl/readcode/cscope-app/cscope.out
let Tlist_Enable_Fold_Column = 0
let Tlist_WinWidth = 30
let Tlist_Show_One_File = 1
set tabstop=4
nmap :cs find d =expand("")
nmap :cs find c =expand("")
nmap :cs find t =expand("")
nmap :cs find e =expand("")
nmap :cs find f =expand("")
nmap :cs find i =expand("")
nnoremap :TlistToggle
最下面这几行定义了F2-F9功能的快捷键
F9是打开关闭左边taglist窗口的快捷键
具体它的语法解释在vi中通过键入
:help cscope
学习和理解
4。使用方法
用vi打开参加训练的代码,将光标停留在调用的方法上按ctrl-], 是不是出现了这个方法的原型代码,按F9键多出左边窗口,显示方法名列表和宏定义和全局变量,再按一次F9左边窗口消失。
显示加载的数据库
:cs show
能看到加载了两个cscope.out文件
:cs find 2 方法名 或 :cs find d 方法名 对应快捷键F2
完成找到被这个方法调用的方法名
:cs find 3 方法名 或 :cs find c 方法名 对应快捷键F3
完成找到调用这个方法的方法名
:cs find 4 字符串名称 或 :cs find t 字符串名称 对应快捷键F4
找到出现的字符串
:cs find 7 文件名 或 :cs find f 文件名 对应快捷键F7
找到文件
:cs find 8 文件名 或 :cs find i 文件名 对应快捷键F8
找到include这个文件的文件
:TlistToggle 对应快捷键F9
5。没有做到的
考虑代码在不断的编写过程中,怎样做才能同步cscope的库呢?
请教同事,他们用的是Ctag,从网上下载exuberant-ctags,安装后,首先,在源码根目录处建立tags文件,指令如下:Ctag -R
此时在当前目录下就创建了一个叫tags的文件。
第二.使用vi打开*.c文件,如果想查看function(param1,param2)在多少地方引用了或者在什么地方声明的,可将光标移到上说的函 数处,在vi的命令符状态输入:tag function(或者直接按 CTL+}),vi将跳转到找到第一个function的*.c文件或*.h文件中。
第三.如想看看到底有多少文件引用了该函数,可在vi命令符状态输入:ts,就可以看见有多少地方使用了该函数。
第四.按CTL+T键将返回到原来地方。
vi+indent+ctag编辑c
vim结合ctag,indent是比较好的用于编辑,查看c语言源程序的方法。
ctag完成文件间元素交叉关联。
ctag -R *
:ta 标志符
ctrl+]
ctrl+o
ctrl+t
vi -t 标志符
indent为源代码进行格式化。
:%!indent
说说在fedora上使用ctags和cscope看代码
我装的fedora6上的vim版本是7.0,带有 ctags-5.6和 cscope-15.5的支持。我选择了工作机使用linux fedora6,系统自带的word和看pdf文件的软件都有,收发邮件的软件也有,挺方便的,好用,就是看代码的软件需要自己配一下,麻烦一点,不过配 好了以后从速度和使用习惯上比sourceinsight好使。参考了网上一些人的经验,实践了一下,写这个文档总结也许对想了解了解ctags和 cscope的人有帮助。
有很多程序员在linux上习惯使用vi编辑器,也有一些人喜欢使用emacs,不过我个人还是倾向于vi,其实用惯了vi就不喜欢用 windows上的编辑器了,其实原因很简单:使用键盘完成查找和替换比用鼠标准确和快,而vi都使用键盘操作实现功能。目前vim是类似于vi的编辑 器,它是开源项目而且功能更多,而ctags和 cscope就是它的插件,下面针对vim 来谈谈配置使用ctags 和cscope看代码。
1。需要下载安装
taglist是vim的插件,用来在屏幕左边开窗口显示代码的全局变量、函数名称
下载地址:http://www.vim.org/scripts/script.php?script_id=273
我下载的是taglist-43.zip
安装的方法是将这个包在/usr/share/vim/vim70下展开
2。对应需要看的代码生成cscope的数据库,这个过程也叫训练
我需要看的代码有三部分一部分是linux内核,另外两个部分是库和应用层代码。
Linux内核代码针对我需要的部分整理出数据库,而不相关的部分不参加整理
先建路径:
mkdir $HOME/readcode
mkdir $HOME/readcode/cscope-kernel
mkdir $HOME/readcode/cscope-app
进入路径:
cd readcode
建立生成cscope 数据库的文件文件名是create-kernel.sh
LNX=$HOME/build/linux-2.4.22
find $LNX /
-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o /
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" -prune -o /
-path "$LNX/tmp*" -prune -o /
-path "$LNX/Documentation*" -prune -o /
-path "$LNX/scripts*" -prune -o /
-name "*.[chxsS]" -print >$HOME/readcode/cscope-kernel/cscope.files
cd $HOME/readcode/cscope-kernel
cscope -b -q -k
cd $HOME/readcode
执行 source create-kernel.sh
会在目录$HOME/readcode/cscope-kernel下生成cscope.out文件
对应用层代码生成cscope的数据库要简单地多
它的生成脚本:
APP=$HOME/build/App
find $APP -name "*.cpp" -print >$HOME/readcode/cscope-app/cscope.files
find $APP -name "*.[ch]" -print >>$HOME/readcode/cscope-app/cscope.files
cd $HOME/readcode/cscope-app
cscope -b -q -k
cd $HOME/readcode
应用程序代码有一些是c++的,所以将.cpp格式的代码列出来生成cscope数据库
3。配置.vimrc文件
.vimrc内容如下:
set cst
set csto=1
set cscopequickfix=s-,c-,d-,i-,t-,e-,f-
cs add /home/yangxl/readcode/cscope-kernel/cscope.out
cs add /home/yangxl/readcode/cscope-app/cscope.out
let Tlist_Enable_Fold_Column = 0
let Tlist_WinWidth = 30
let Tlist_Show_One_File = 1
set tabstop=4
nmap :cs find d =expand("")
nmap :cs find c =expand("")
nmap :cs find t =expand("")
nmap :cs find e =expand("")
nmap :cs find f =expand("")
nmap :cs find i =expand("")
nnoremap :TlistToggle
最下面这几行定义了F2-F9功能的快捷键
F9是打开关闭左边taglist窗口的快捷键
具体它的语法解释在vi中通过键入
:help cscope
学习和理解
4。使用方法
用vi打开参加训练的代码,将光标停留在调用的方法上按ctrl-], 是不是出现了这个方法的原型代码,按F9键多出左边窗口,显示方法名列表和宏定义和全局变量,再按一次F9左边窗口消失。
显示加载的数据库
:cs show
能看到加载了两个cscope.out文件
:cs find 2 方法名 或 :cs find d 方法名 对应快捷键F2
完成找到被这个方法调用的方法名
:cs find 3 方法名 或 :cs find c 方法名 对应快捷键F3
完成找到调用这个方法的方法名
:cs find 4 字符串名称 或 :cs find t 字符串名称 对应快捷键F4
找到出现的字符串
:cs find 7 文件名 或 :cs find f 文件名 对应快捷键F7
找到文件
:cs find 8 文件名 或 :cs find i 文件名 对应快捷键F8
找到include这个文件的文件
:TlistToggle 对应快捷键F9
5。没有做到的
考虑代码在不断的编写过程中,怎样做才能同步cscope的库呢?
- vi中结合ctag查找函数声明
- vi中结合ctag查找函数声明
- vi + ctag + Tlist
- vi+indent+ctag编辑c
- Vi中内容查找
- 查找头文件中相同函数声明--用shell实现
- vi 编辑器中查找、替换
- Javascript中函数声明
- vi m 的ctag +Tlist ,蛮好用的
- Vim中Ctag安装和使用
- Vim中Ctag安装和使用
- Vim中Ctag安装和使用
- vi/vim中查找替换文字
- vi中查找和替换文字
- linux 常用命令: find tar vi 中查找
- linux vi中查找字符的方法
- linux中vi怎么根据关键词查找
- vi/vim中查找替换使用方法
- 南瓜盅炖蛋
- 嗯,我最闲。
- Flash杂志《Summer tree》即将完成
- JAVA操作XML三(更新):修改或删除XML内容
- 要写软件项目管理实践报告。。头疼!有人能给点建议吗?
- vi中结合ctag查找函数声明
- 尝试数据库被标记为RESTORING的处理方式
- SysUtils.StrScan、SysUtils.StrRScan、SysUtils.StrPos函数
- mfc工程中添加com接口支持
- Spring 异常 Couldn't generate CGLIB subclass of class [class spring.dao.UserDAO]: Common causes of this problem include using a f
- VB中的字符串操作函数
- 摩托罗拉 W24 WIFI模块 使用 笔记(三)
- C/C++关键字static,const,inline,define,typedef
- 中国的技术论坛