作者weii (iiew)
看板SFFamily
标题[转录]Emacs etags 简介
时间Fri Mar 12 13:34:48 2004
※ [本文转录自 Linux 看板]
发信人: Jiun-jie Huang <
[email protected]>, 看板: Linux
标 题: Emacs etags 简介
发信站: National Tsing Hua University (Fri Mar 12 02:52:54 2004)
转信站: ptt!ctu-reader!news.nctu!not-for-mail
etags 简介 -*- Outline -*-
* 前言
有许多的 IDE(Integrated Development Environment) 都提供了函数名称的
自动完成功能( 亦即,输入前面几个字元之後,编辑器可以自动帮你完成後面
的函数名称)。Vi 里面有 ctags 可以做到这件事,那麽 Emacs 呢?答案是
etags. 在这篇文章里,我会简短的介绍如何使用 etags.
* etags 使用方法
** 建立函数及关键字列表
在使用之前,你必须先在你的发展环境目录底下建立列表; 假设你的发展环
境目录名称叫做 /path/to/developer/, 建立列表的方法如下:
% cd /path/to/developer/
% etags *.h *.c
这样就建立完成了,根据 etags/ctags 的手册, etags/ctags 可以处理的语
言有 C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang, LaTeX,
Emacs Lisp/Common Lisp, makefiles, Pascal, Perl, Postscript,
Python, Prolog, Scheme and most assembler-like syntaxes.
预设的列表档名是 TAGS.
** 把函数及关键字列表读进 Emacs
开始用 Emacs 编辑档案, 比如说你正在编辑 foo.c, 你先用 C-x C-f 把
foo.c 读进来之後,你需要使用 etags 的功能,那麽你就执行
M-x visit-tags-table <RET> /path/to/developer/TAGS <RET>
把 /path/to/developer/TAGS 档案读进来。注:<RET> 表示 Return 键,或
是在键盘上通常标示为 Enter.
** 在 Emacs 中搜寻函数内容
有的时候我们会想要直接跳到某个函数里面去修改他的内容,你可以使用
M-. (没错,就是 Meta 跟一个句点) 然後输入函数名称就会跳到该函数的
code 那里去; 如果你按 M-. 的时候游标指着一个函数名称,你可以在输入
函数名称的时候直接按 <RET> 即可跳到该函数源码的地方。跳过去之後,如
果你想要回来原来地方,你可以用 M-* 来做到。
如果你想要在另一个视窗内看到该函数源码,而不是你现在的这个视窗(对照
方便), 那麽你可以用 C-x 4 . TAG <RET> 来达成这件事。
如果你要搜寻某些函数与关键字,你可以用 M-x tags-search 的功能,这个
可以用 regular expression 来搜寻。当你用 M-x tags-search <RET>
REGEXP <RET> 之後,你可以用 M-, (Meta 逗点), 找下一个搜寻到的函数名
或关键字。
** 函数及关键字自动完成
etags 并没有提供函数及关键字自动完成(auto-completion)的功能, 但是
Emacs 有提供一个功能可以达成这件事,叫做 dynamic abbreviation
expansion. 这个功能事实上是把去找在开启的 buffer 里面有那些字串是你
输入字串的完整字串,而 TAGS 列表就在一个 buffer 里面,所以可以达成
函数及关键字自动列表。当你输入一个函数名称或是一个变数名称的前面几
个字母,比如说: foo-, 然後按 M-/, 这时候 Emacs 会把所有可能的字串找
到,并把第一个可能的字串直接完成,所以你按了一次 M-/ 之後可能会变成
foo-bar-function, 你继续按 M-/ 可以变换成其他可能的字串,直到没有为
止。或者是你也可以按 C-M-/, 这时候 Emacs 会像其他时候的
auto-completion 的行为一样,跳出一个视窗把所有的可能列表列出来给你
选择。
* 结语
当我开始使用 etags 的功能之後,我就没有办法不用这个功能了,因为实在
是太方便了。etags 也可以帮你自动完成标准函式库里的名称,只要你在
etags 的时候把 /usr/include 里的表头档案也包含进来就可以了。etags 还
有其他比较进阶的功能,我没有一一列出来,有兴趣的人可以去看看 M-x
info 里的 Emacs 手册。最後我做一个这次提到的功能列表,供读者参考用。
* 按键列表
M-x visit-tags-table <RET> TAGS-file <RET>
把 TAGS-file 档案读进 Emacs
M-. TAG <RET> 寻找函数或关键字定义的源码
C-x 4 . TAG <RET> 在另一个视窗寻找函数或关键字定义
M-* 回到寻找关键字定义之前的地方
M-x tags-search <RET> REGEXP <RET> 用正规表示式搜寻函数或关键字定义
M-, 找下一个搜寻到的函数或关键字
M-/ 自动完成可能的函数或关键字
C-M-/ 列出所有函数或关键字名称的自动完成列表
--
Jiun-jie Huang, aka Albert E-mail: jjhuang AT cm.nctu.edu.tw
黄俊杰
Department of Computer Science
National Tsing Hua University MIME/ASCII/PDF/PostScript are welcome!
HsinChu, Taiwan NO MS WORD DOC FILE, PLEASE!
--
我爱用UD
我希望Blizzard可以让nec招换出来的骷髅兵强壮一点
最好身高一米九 一拳三百磅
不然骷髅兵实在太废~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.107.243