Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622055
  • 博文数量: 69
  • 博客积分: 1891
  • 博客等级: 上尉
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 23:38
文章分类

全部博文(69)

文章存档

2012年(46)

2011年(23)

分类: LINUX

2012-03-12 20:39:34

         最近一直在用sourceInsight查看源码,确实很方便,但是也有一点不爽的地方,就是屏幕一直闪,没办法解决,看的眼睛很难受,所以决定改用vim了。在网上找了一篇简单的教程,转来了,先简单用着,后面有需要再深入研究。

                偶然刚看了wheelz 的文章“用tags/cscope看内核源代码-HOWTO” ( amp;Number=573982&Search=true&Forum=linuxK&Words=ctags& Match=Entire%20Phrase&Searchpage=0&Limit=25&Old=allposts& amp;Main=573982),尝试了一下vim+ ctags+taglist,感觉很不错,阅读代码速度提高好多啊! 可以不再用windows上的sourceinsight了。

这是wheelz的文章,这里转载:
*********************************************************************
看大家讨论得热烈,我也写点。呵呵
其实内核原代码的Makefile就包含了make tags/TAGS的选项,
但是生成的tags太大,因为包含了drivers等不常用的目录。
因此参照内核的Makefile文件,写了一个Makefile,
用来生成ctags/cscope/etags。
这样,可以根据自己的需要,删除和添加目录。
我以前没有用过tags/cscope,不知道有没有更好的方法。欢迎指教。
也请大家补充tags/cscope的常用的和好用的命令,技巧。
一、用法
找一个空目录,把附件Makefile拷贝进去。
然后在该目录中选择性地运行如下make命令:
注:SRCDIR用来指定内核源代码目录,如果没有指定,
    则缺省为/usr/src/linux/,如
$ make
将处理/usr/src/linux下的源文件,在当前目录生成ctags, cscope
1) 只创建ctags
$ make SRCDIR=/usr/src/linux-2.6.12/ tags
2) 只创建cscope
$ make SRCDIR=/usr/src/linux-2.6.12/ cscope
3) 创建ctags和cscope
$ make SRCDIR=/usr/src/linux-2.6.12/
4) 只创建etags
$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS
二、处理时包括的内核源文件:
1) 不包括drivers,sound目录
2) 不包括无关的体系结构目录
3) fs目录只包括顶层目录和ext2,proc目录
对2.6.12.1内核,这样生成的tags大约12M,cscopes大约19M
三、最简单的ctags命令
----------------------
1) 进入
进入vim后,用
:tag func_name
跳到函数func_name
----------------------
2) 看函数(identifier)
想进入光标所在的函数,用
CTRL + ]
----------------------
3) 回退
回退用
CTRL + T
----------------------
我现在只会用这几个命令,请大家说说其他常用的命令。
查找标识符
:tag write_
找到以write_开头的标识符,如果有多个,继续按,直到找到想要的。
如果想跳到包含block的标识符
:tag /block
然后用来选择。
这里'/'就是告诉vim'block'是一个pattern。
如果想在以write_开头的标识符中选择一下,
:tselect /^write_
这里,'^'表示开头,同理,'$'表示末尾。
多个同名的标识符
如果某个函数有多个定义,':tag'命令会跳到第一个,如果当前文件有,则优先用这个。
然后可以跳到下一个同名的
:tnext
跳到第一个
:tfirst
跳到前count个
:[count]tprevious
跳到后count个
:[count]tnext
跳到最后一个
:tlast
你也可以在所有tagname中选择:
:tselect tagname
*********************************************************************
我没有用wheelz的makefile,因为我需要看驱动代码,所以用了make tags命令。
下面是taglist的安装和简单用法,转载了的部分内容,如下:
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
安装说明:
1. 确保机器上有一个可用的Exuberant Ctags的版本(可以执行命令"ctags")
2. 在Vim网站上下载taglist(假设为taglist.zip);
3. 使用"unzip taglist.zip -d ~/.vim"解开;
4. 在Vim中运行":helptags ~/.vim/doc"安装文档。
虽然taglist使用ctags,但并不要求tags文件的存在。
功能说明:
使用命令":Tlist"启用/关闭taglist。
taglist的功能主要如下:
  • 可以显示宏(macro)、函数(function)、变量(variable)、类型定义(typedef)、类(class)、结构(struct)等多种内容信息;
  • 打开多个文件时,可以同时看到多个文件的结构信息;
  • 在左边的taglist窗口显示的名称上双击鼠标或按回车键,右边主窗口中会跳转到相应的定义位置;
  • 右边窗口中光标的位置改变,左边的窗口也会在4秒内(缺省值,参见":help 'updatetime'")黄色加亮显示相应的名称;
  • 在启用/关闭taglist时,插件能够自动改变当前Vim窗口的大小(不管是文本模式的Vim还是图形界面的Vim),除非使用":let Tlist_Inc_Winwidth=0"关闭这一功能(当使用这一功能导致兼容性问题时)。

更多的帮助内容请参考":help taglist"。
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
阅读(2913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~