而是vi 原本的特异功能. emacs只是发扬光大而已. 假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码, 放在 ~/tin-1.3beta 下面. 你想看它们.
首先, 叫emacs cd到该目录: M-x cd
然後, 建立tag table. tag table 就是一张对照表, 记录哪个符号(variable/function call) 对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程 式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)
M-! etags *.[ch]
M-! 是执行external shell command的意思. etags就是emacs的建表程式. 你只要告诉它你的source code在那□即可.
vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为 我们介绍emacs, 所以不管它.
然後, 怎麽看程式? 你知道所有的C 程式都是由main()开始, 所以你想 找到main()在哪个档案. 这时只要按 M-. 然後emacs会问你tag table 在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入main, emacs就会把你带到main(){ ... }去.
如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标 移到该函式的名字上, M-. ENTER 就搞定了.
如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去), 那你可以用 C-u M-. 找下一个.
在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个. 在其它地方也有效.
Emacs的一些package:
M-x dired (或C-x d) 游走/编辑 目录, 就是档案总管的意思 icon_smile.gif
M-x man 就是man page M-x shell 开个command prompt, 不过不能跑vi,elm, tin... M-x gnus 读新闻/读信 M-x rmail 读信 M-x vm view mail M-x mh-rmail 读信 (package mh-e) M-x mh-smail 送信 (package mh-e)
强列建议改用emacs读news/bbs. 世界会更美好!
读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder 搬到自己的目录下, 占用quota, 我不喜欢 :p 建议elm或mutt. 除非参加mailling list配合procmail. 不然不实用. 用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus. 写完信, C-c C-c 就可以送信.
如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control (minor mode.), c-x c-q 变成check-in/check-out.
如何取得更多的资讯:
Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统. 很多东西都可以线上找到你要的资讯.
前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace 的ascii码) 在emacs里面是help的意思, 它可以带出一串指令. 常用的有:
C-h F Emacs FAQ C-h t Emacs 使用教学 C-h n Emacs NEWS file, 介绍最近改版的新功能 C-h i Info system. Info是gnu用来取代man page的系统, 基本上和文字模示的WWW差不多. 有许多重要的资讯 可以在这边找到. 如果你是新手, 建议你在x-win下 看. 不然, 按键 m (menuitem), SPC next page l (last node: node就是章节的意思) u (up node) d (directory, 索引). BS (Backspace, back a page). 如果全部只按SPC, 就跟man 一样. C-h k describe key, 告诉你按这个键执行那个lisp function. C-h f describe function. 告诉你function在作什麽. 如果只按SPC, emacs会给你所有lisp 函数的列表, 和说明. C-h v describe variable 同function. C-h a apropos的意思(approximate). 给lisp function的部份 字串, emacs帮你找. C-h b 列出目前所有的keybinding C-h m mode help. 列出目前的mode的特殊说明. C-c C-h 列出以C-c 开头的所有key-binding. 虽然说Emacs 可以定义按键, 可是Ctrl- 开头的所有组合大概都用光了, 只有C-c算是可以自定指令. 不过有些mode也侵犯这个空间. 目前的convention是C-c <chr> 留给user, C-c C-<chr> 留给package.
有以上这些help, 你的emacs/elisp功力会随著时间成长.
上一篇:Python入门(一)----什么是python?python及模块的安装
下一篇:安装,配置rp-pppoe拨号软件,使adsl成功上网
|