QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6115|回复: 16

利用Emacs阅读源码!

[复制链接]
发表于 2003-8-6 13:08:56 | 显示全部楼层 |阅读模式
曾经看见很多linuxer问过用什么工具来阅读源码,我自己以前一般也是使用sourcenav的,最近,发现原来Emacs就可以轻松完成这项工作!

Emacs通过tag table来完成这项工作,tag table是一种数据库,它把源码中对函数和类型的定义的交叉信息保存在标签文件中。利用tag table,用户在阅读源码的时候可以方便的查找函数和各类结构的定义。

1,创建标签表

我们可以通过etags命令创建tag table,它支持大部分编程语言,它的语法如下:
代码:

[code:1]
etags -t <list of files>
[/code:1]

例如我们要为当前目录下所有.c和.h创建tag table:
代码:

[code:1]
etags -t *.[ch]
[/code:1]

etags读取<list of files>中的所有文件,在当前目录下创建‘TAGS’文件,其中包含tag table。Emacs就可以利用其中的信息在源码中定位函数和结构。

2,选择标签表

方式一: M-x visit-tags-table,然后输入你要选择的‘TAGS’文件的路径。

方式二: 在你的~/.emacs文件中加入
代码:

[code:1]
(setq tags-table-list
      '("/usr/local/src/1" "/usr/local/src/2"))
[/code:1]

可以把你希望查找的‘TAGS’文件的路径都列在其中,可以免去每次都要输入的麻烦。

3,使用(下面的东西翻译起来比较麻烦,所以直接cp了emacs的文档中的东西)

M-.
Find first definition of tag (find-tag). 查找第一个匹配的函数或结构
C-u M-.
Find next alternate definition of last tag specified.
C-u - M-.
Go back to previous tag found.
C-M-. pattern RET
Find a tag whose name matches pattern (find-tag-regexp).
C-u C-M-.
Find the next tag whose name matches the last pattern used.
C-x 4 . tag RET
Find first definition of tag, but display it in another window (find-tag-other-window).
C-x 5 . tag RET
Find first definition of tag, and create a new frame to select the buffer (find-tag-other-frame).
M-*
Pop back to where you previously invoked M-. and friends.

4,备注

我认为相对于sourcenav,使用emacs更为方便,GNU项目大量的都是使用c语言,而sourcenav居然不可以查找c中的宏,十分麻烦。而emacs甚至可以查找全局变量。而且emacs速度比sourcenav明显快很多!

更详细的内容见emacs的文档!

http://www.gnu.org/manual/emacs/html_chapter/emacs_26.html#SEC334
发表于 2003-8-6 13:14:59 | 显示全部楼层
晕倒 光是那些基本的c-x c-y M-x...命令就记不下来 比背马原还要难
回复

使用道具 举报

 楼主| 发表于 2003-8-6 13:37:43 | 显示全部楼层
用多了不就记住了?
回复

使用道具 举报

发表于 2003-8-6 16:03:55 | 显示全部楼层
那是那是~不过我觉得还是vi比较好~呵呵~习惯问题~
回复

使用道具 举报

 楼主| 发表于 2003-8-7 16:33:26 | 显示全部楼层
都不给我加个精,唉! 打击积极性呀!
回复

使用道具 举报

发表于 2003-10-14 18:15:03 | 显示全部楼层
我也很喜欢emacs

:)
回复

使用道具 举报

发表于 2003-10-14 20:12:23 | 显示全部楼层
用vi也可以达到同样目的,应该研究。
回复

使用道具 举报

发表于 2003-10-14 21:20:01 | 显示全部楼层
习惯在windows下的sourceinsigh
还是它最好了
回复

使用道具 举报

发表于 2003-10-14 21:57:05 | 显示全部楼层
我现在编程的时候就用emacs,如果是修改某些文本(配置文件的内容),我就用vi,因为后者启动很快,也很方便,不过,编程方面个人觉得emacs是一个非常不错的选择。
回复

使用道具 举报

发表于 2003-10-15 23:58:02 | 显示全部楼层
没有什么的了,可以多学一点也也是好事啊!!!
回复

使用道具 举报

发表于 2003-10-17 07:11:30 | 显示全部楼层
以前我一直用的vi
不过现在逐步往emacs转移了
因为我学会emacs下面怎么设置各种复杂的命令了
毕竟还是emcs支持的语言风格多一点啊
而且还有很多控制功能都是vi需要大肆修改配置文件才能实现的
回复

使用道具 举报

发表于 2004-3-4 13:46:04 | 显示全部楼层
sourceinsight我也用过,的确不错,但与Emacs不是同一个概念的东西,差的太远。

Emacs,不是一个XXXXX,也许我们称他为一种理念更好,他早超越了一个软件的范畴

sourceinsight毕竟是常人观念的作品,不过是一些基本东西的组合,没什么很“神”的一面,哪里都能见到这样的作品;
emacs则完全是一种思维理念的提升,远远不是一个编辑器。他几乎能做想做的一切。他的c+lisp的架构才是真正有味道的东西,也是100年后人们需要的理念。哎... 天才总是超越时代

sourceinsight是牛顿力学,emacs是量子引力论。
回复

使用道具 举报

发表于 2004-4-16 16:21:15 | 显示全部楼层
偶第一次用emac的时候,是在学校的sun OS上. 当初一看这玩意儿就想"靠,什么破烂啊,unix上也有note pad?真是晕~"
后来用它写c++,噢咿?能自动识别语法,能自动美化程序,看来比notepad厉害噢...
然后,才知道是个比较厉害的东东...
回复

使用道具 举报

发表于 2004-4-17 11:58:45 | 显示全部楼层
呵呵,那玩意比较复制呀,呵呵,
习惯用VIM
回复

使用道具 举报

发表于 2004-6-3 21:52:02 | 显示全部楼层
emacs好!用惯了后基本上用它来做什么都可以
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-8 04:51 , Processed in 0.046866 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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