GNU EMACS

GNU EMACS 是 GNU 计划下的第一个产品
EMACS 为 Editor MACros 的缩写
Richard
Stallman 於 1975 年在 MIT 首次 撰写 EMACS editor 目前 GNU EMACS 已发展到 19.28 版
本文所讨论的 GNU EMACS 也以 19.28 版为主 GNU EMACS 秉持著 GNU 的精神 它依然是
free 的 任何人都可以 “anonymous ftp” 的方式至 prep.ai.mit.edu 这个 site 取得 GNU EMACS 的
原始码
GNU EMACS 不是 public domain 的产物 它有版权也有使用上的限制 那就是任何得
到它的人都不可以将其视为私有的财产 修改过的 GNU EMACS 也不可以作为商品来牟利 金钱
交易的行为是绝对被禁止
EMACS 有多种版本可适合不同的工作平台 platfrom 适合 UNIX 环境的有 GNU EMACS
Unipress EMACS 以及 CCA EMACS
其中以 GNU EMACS 最常被使用 本文也只介绍 GNU
EMACS 适合个人电脑的 EMACS 有 FreEMACS MicroEMACS 以及 Epsilon 当然 也有使用
在 VMS 环境的版本
GNU EMACS 是由 C 与 LISP 语言写成 任何人都可依据需要将个人所发展的函式 function
加入 GNU EMACS 上 当然 新发展的软体是不可以从事商业买卖 只能将它无条件的奉献出来
新发展的函式可以直接在 EMACS 中使用 不需重新编译 complie 整个 EMACS 而且新增的
函式也不会破坏 EMACS 原有的结构 就因为有此特性 EMACS 的函式可以 与日俱增 愿与他
人共享成果的使用者 可以透过电子邮件或电子公布栏 将函式的原始码公诸於世 公布的函式
最後会经由 FSF 的审查 以决定是否要加入新版的 EMACS 中 FSF 也鼓励使用者将所发现的错
误 透过相同的管道 提供给 FSF 作为改进 之用 GNU EMACS 就是在如此的运作下 靠大家共
同的努力来提升品质 以达产品的稳定性
GNU EMACS 的特质
倒不如说它是一个以编辑器为主干的 环境软
GNU EMACS 与其说它是一个编辑器 editor
体 一般的软体都是将编辑器视为一个附属功能 只有 EMACS 以编辑器为基石 在其上发展其它
的功能 以收发电子信件的软体为例 电子信件软体是以收发信件为环境的基石 任何电子信件的
软体都只有在使用编辑器时 才呼叫相关的编辑器
EMACS 的出发点就与众不同
EMACS 一
切以编辑器为主 任何的功能都是建基在编辑器之上
所以 进入 EMACS
就等於是进入了一个编辑环境 这个编辑环境提使用者许多功能 让使
用者如置身在一个全功能的作业系统中 EMACS 自行发展了一个 “bourne-shell-like” 的 shell 除
了 EMACS 自己的 shell 外
EMACS 还可以让使用者自行选择所使用的 shell EMACS 可以读
送 e-mail
EMACS 可以透过 ftp 来编辑远方 host 上的档案 而不需要签入 login 档案所在的
host
EMACS 也可做 telnet 与 relogin 的动作 EMACS 也可以读 news
EMACS 也提供了年
可以让使用者查阅日期 也可以将重要的事情在年历上标示出来 EMACS 又提供
历 calendar
了 “Diary” 的功能 当特定的日期与时间到来时 会在萤幕上将 “Diary” 上 的事情显示;EMACS 也
有撰写文章大纲的功能
EMACS 更提供多种程式的编译功能 让使用者可以在 EMACS 中一边
编辑程式一边编译程式 EMACS 更有自己的 debugger 使程式的除错 编辑与编译在 EMACS 中
同时完成
所以 EMACS 所提供的不只是一个编辑器而己 它所提供的是一个整合的工作环境 而这个环
境是建立在编辑的基石上 它希望使用者进入了 EMACS 以後 可以在 EMACS 的环境中完成 所
有的工作 不需要离开 EMACS 要离开 EMACS 就是要离开电脑的 时候 logout
EMACS 除
了是一个整合的工作环境外 它还具有以下的特性
display editor
real-time editor
advanced editor
第 2 页
共 53 页
3
Self-documenting
Customizable
Extensible
support X window enviornment
EMACS 是一个 display 编辑器
因为每一个被编辑的文字都会被显示在萤幕上
EMACS 是一个 real-time 的编辑器 因为当新的文字被键入时 萤幕会在非常短的时间内被更
新 EMACS 的编辑功能不只具备一般编辑器所有的功能 它还提供如下的功能
♦ 文字的填充 filling of text
♦ 程式自动内缩功能
♦ 可以同时阅读一个以上的档案
对於字元 characters 字 words 列 lines 句子 sentences 段落 paragraphs
以及各种 程式中的 expression 和注解 comments 都有其自有的处理方法
页 pages
EMACS 是一个 Self-documenting 的软体 因为在任何时候都 可以 “ Ctrl-h” 指令来得立即的
帮助 因为 透过 “ Ctrl-h” 可以得知每一个 EMACS 的指令
EMACS 是可以 Customizable 的 使用者可视个人的需求 来改变 EMACS 指令的定义 GNU
EMACS 的 Customization 的设定非常简单 使用者可以很方便的使用它
EMACS 是 Extensible
的 GNU EMACS 是 由 LISP 语 言 所 写 成 的 函 式 共 同 组 成 的
函式与函式间的互动关系
dependency 不强 就因为 EMACS 是由函式所组合而成的 所以可以随时将函式作增减而不会
破坏 EMACS 既有的结构
EMACS 也针对 X 的视窗环境 提供自己的选单 menus 和滑鼠按
纽 mouse bottons 功能 EMACS 对於 text-only 的终端机也提供许多与 X 环境相当的服务品质
例如在文字模式的终端机 可以同时开启数个的档案 档案可以互相切换 当使用 shell 模式 来执
行 shell 指令的同时也可以编辑档案 但本文的只讨论 text-only 的 EMACS 使用法
以上的种种
就是有关 EMACS 的特色 至於如何使用这些功能就下列章节所要讨论的重点
Emacs 的线上辅助说明
EMACS 是一个整合的工作环境 初次使用 EMACS 或不熟悉 EMACS 的人 常会不知所措
所以 EMACS 提供了非常便捷且功能强大的线上辅助说明 on-line help 来帮助使用 EMACS
Emacs 的基本知识
在未讨论 EMACS 的线上辅助说明时 先谈谈如何启动 EMACS
启动 EMACS 的方法很简
单 只要在萤幕的提示下键入 “emacs” 即可 离开 EMACS 只要键入”Ctrl-x Ctrl-c”即可离开
EMACS
键入 “Ctrl-x Ctrl-c” 的方法是 先按住键盘上的 Ctrl 键不放再按下英文字的 “x” 即可
键入 “Ctrl-c” 的方法一样 先按住键盘上的 Ctrl 键不放再按下英文字的 “c” 即可 当然进入与离
开 EMACS 的方法还有多种 这里只是介绍一种方法 让使用者可以很快的使用 EMACS 的线上
辅助说明 至於其它的方法会在以下各章节中陆续提及
除了进入与离开 EMACS 的方法必须知道外 还有一个指令非常用那就是 “Ctrl-g”
用来取消键入的指令 如果不想执行所键入的指令 可以随时将其取消
“Ctrl-g” 可
EMACS 键入指令的方法有二种
♦ Ctrl 键
♦ Meta 键
所有 EMACS 的指令都可以 Meta 键表示出来 键盘上若无 Meta 键 则可以 ESC 键来取而
代之 常用的 EMACS 指令通常会有一个 Hotkey 与之连结
Hotkey 的构成 通常是以 Ctrl 为
第 3 页 共 53 页
4
开头的型态出现 例如 “Ctrl-x Ctrl-c” 这一个 Hotkey 则代表了 EMACS 指令的 “save-buffers-kill-
emacs” 若要使用 Meta 键来表达与 Ctrl-x Ctrl-c 相同的效果 则必须键入
“ESC-x save-buffers-kill-emacs”
使用 Meta 键 可以利用 EMACS completion 的功能 因为 completion 可以让使用者键入最
少的字 就可使系统唤起所欲执行的命令 以下就介绍 EMACS 的 completion
EMACS completion 的意思是 只要键入字串的部份
EMACS 会将其余的部份自动填入其应
在的位置 如果所给予的字串不足以决定其余的部份 EMACS 会将所有可能的结果都列出来 以
供使用者来决定所需要的字串名称
completion 所适用的范围如下
♦ 指令
♦ 特定目录下的档案
♦ 缓冲区
♦ EMACS 的变数
至於何谓特定目录下的档案 缓冲区以及 EMACS 的变数 会在以後的章节中陆续谈及 此处
讨论 completion
只 是 为 了使 用 completion 於 EMACS 的线 上 辅 助说 明 使用 EMACS 的
completion 有三种方法
♦ TAB 尽可能将其余的字串填满
♦ SPACE 将 puncutation 字元之前的字填满 填充的字不会超过一个字以上
♦ ? 将所有可能的 completions 选择都列出来
使用 completion 的做法是将部份字串键入後 再按下 TAB
SPACE 或 ? 即可
“M-x au TAB” 则萤幕的最下方会出现 “键入 TAB 则萤幕会在另一个视窗出现
Possible completions are
auto-fill-mode
auto-raise-mode
若键入 “M-x au SPACE”
若键入 SPACE
例如
键入
auto-lower-mode
auto-save-mode
则萤幕的最下方也会出现 “M-x auto-”
则萤幕的另一个视窗也会出现如下的命令
Possible completions are
auto-fill-mode
auto-raise-mode
auto-lower-mode
auto-save-mode
这似乎意味著 TAB 与 SPACE 的功能一样 其实不然 二者的差异可从下一个例子看出 键
入 “M-x auto-f TAB” 可得 “M-x auto-fill-mode” 但键入 “M-x auto-f SPACE” 只能得到 “M-x
auto-fill-” 欲得到 “M-x auto-fill-mode” 则必须再键入一次 SPACE 这就是前面所说的 “SPACE” 一
次只填一个 “puncutation” 之前的一个字的意思 而 TAB 则是尽可能的将所有可以判断出来的字串
呈现出来 其显示字串的长度并不以一个 “puncutation” 为限 键入 ? 的作用 是在 EMACS 的另
一个视窗上显示所有可能的字串 此时使用者可根据视窗上的讯息键入适当的命令 例如键入 “M-
x au ?” 萤幕上出现另一个视窗显示如下的资讯
Possible completions are
auto-fill-mode
auto-raise-mode
键入 “M-x au ?” 的地方
不同的地方
auto-lower-mode
auto-save-mode
则不会执行
若视窗的内容太多无法一次穷尽
二个指令来使视窗做上下的移动
completion
的动作
此时就必需卷动视窗
第 4 页
共 53 页
这是 ? 与 TAB
SPACE 最大
卷动视窗可以用 “Ctrl-v” 与 “Meta-v”
5
Emacs 的自学教材
想快速了解 EMACS 的人 可以参考 EMACS 的自学教材 tutorial
使用 EMACS 自学教
材的方法很简单 只要键入 “Ctrl-h t” (help-with-tutorial) 即可进入 EMACS 的自学的状态了
EMACS 的自学教材可分成以下几部份
1. 介绍 EMACS 指令的键入方法 即介绍 Ctrl 与 Meta 键
2. viewing screenfuls
3. basic cursor control
4. Ctrl-g 的用法
5. EMACS 的 window 与 multiple windows
6. inserting and deleting
7. undo
8. EMACS 档案的处理
9. EMACS 的 buffers
10. extending the command set
11. 简介 EMACS 的 mode line 与 echo area
12. searching
13. recursive editing levels
14. getting more help
15. leaving EMACS
16. 有关 EMACS 的版权问题
EMACS 的自学教材是以编辑功能的介绍为主 虽然 EMACS 的功能不只如此
但编辑是
EMACS 的最基础的功能 要了解 EMACS 当然要从它的基本著手 所以 EMACS 的自学教材也以
编辑的介绍 为主 至於 EMACS 其它的工件环境 是无法从 此自学教材中得知 所以 本文会
在第三章简介 EMACS 的工作环境

转载于:https://www.cnblogs.com/houyewei/archive/2011/12/16/2290142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值