LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2277|回复: 3

用vim+cscope+taglist看程序源码真TMD爽

[复制链接]
发表于 2007-10-30 16:41:22 | 显示全部楼层 |阅读模式
这个是我的shell脚本,用来生成cscope的索引数据库:
SRCDIR是我所看的项目源代码目录
CSDIR是我放置项目源代码索引数据库的目录
脚本如下:

  1. SRCDIR=~/Documents/source_code/linux-2.6.18.8
  2. CSDIR=~/Documents/source_code/cscope/linux-2.6.18.8
  3. cd /
  4. find $SRCDIR -name "*.c" -o -name "*.h" > $CSDIR/cscope.files
  5. cd $CSDIR
  6. cscope -bkq
  7. CSCOPE_DB=$CSDIR/cscope.out;export CSCOPE_DB
复制代码

最后CSCOPE_DB这句话可以不需要,它主要是用来把数据库的路径传给当前的shell环境,不过要使这个生效的话得需要用". ./xxx.sh"(这儿是两个".",中间有空格,用来保留子shell不退出代替父shell运行)这个命令执行才行,不然你的env中不会出现你刚才加的变量。不用那个,可以直接在vim中可以用以下命令加载数据库:

  1. :cs add ~/Documents/source_code/cscope/linux-2.6.18.8/cscope.out
复制代码

然后就可以使用cscope来查找一些变量,结构体,函数的定义和引用了!
跳转到源代码符号的定义的命令如下:

  1. ctrl+]
复制代码

跳回去的命令:

  1. ctrl+t
  2. 或者
  3. ctrl+o
复制代码

其他的命令,请在vim中参考

  1. :h cscope
复制代码

或者man手册!
注意:每次启动vim的时候得要add,不然你要把路径放到环境变量里面。对于想看好几个项目的源代码来说并不好,还是add方便。

以后会详细给出的设置帖子。
这里是我当时参考的官方文章:
http://cscope.sourceforge.net/cscope_vim_tutorial.html
http://cscope.sourceforge.net/large_projects.html
发表于 2007-10-30 18:06:42 | 显示全部楼层
用 Autotools 配置再编译的软件应该有一个目标叫 tags,用它可以生成 TAGS 文件,配合 Emacs 阅读代码。我用 vim 不多,不知道 make tags 得到的文件能否配合 vim 使用,你可以试试看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 20:06:34 | 显示全部楼层
有ctags程序,可以生成tag文件,ctags是vim内嵌的,很多编辑器都可以调用这个tag文件,不过这个只能看定义,不能查找交叉引用,所以我用过第一段时间就没用它了。
vim+cscope+taglist比source insight还强大,我目前的体会。
其实,所有的这些只是在过程中查找一个索引数据库罢了。cscope的全部内核源代码(2.6.18)的索引数据库有100多M,时间大约4-5分钟,celeron M 1.6G,1G内存,fedora 7,其他的稍小的项目,瞬间生成,感觉很好。
数据库还可以放在别的指定的地方,免得破坏源代码的完整性,挺好。
下面是网友说的话:)
以前都是用vi + ctags来查找函数和变量定义,用grep来查找哪些地方调用了函数或修改了变量的值,但一直觉得不方便。也一直以为把这些工作做得最好的是Source Insight。直到......我找到cscope

说起cscope的历史,可以追溯到PDP-11的年代...可以去Cscope Home Page:http://cscope.sourceforge.net/ 看看。一般的Linux发行版都带cscope。

不过,Autotools没用过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 20:23:34 | 显示全部楼层
以前自己也曾经学过一两天的emacs,不过感觉太复杂了,启动也慢(当时自己的机器配置不好),干什么都要两个手一起操作,可能我比较懒,喜欢一个手在Vim里面移动,所以一直没学会emacs,哈哈。再者,很多服务器基本的编辑器都是vi,可能这也是我选择vim的原因吧。
看了Bram Moolenaar的7 Habits For Effective Text Editing 2.0,发现自己对vim的了解还很少啊。
以后有机会再学学emacs吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表