现在就来讨论与 EMACS 发展有关的机构组织以及 EMACS 所扮演 的角色特质。
Stallman 倡导 FSF 的宗旨,是要建立一个软体 free 的王国。 他所谓的 free 并不是意谓著便宜或免费,因为在 FSF 下的 有些软体还是必需付些工本费。他所谓的 free 是指使用上 的自由。
要了解 Stallman 所言 free 的真意,就必须知道一般 软体的使用情形。大部份的商业软体在使用上都或多或少有些限制。 例如,必须付费才可使用软体程式,若运气不好,同一程式在 不同的电脑上使用,可能还要另行付费。有些软体程式的使用 也有一定的期限,期限一到就需另缴费用,否则使用权就会被撤销; 甚至有些软体是以使用时间来计算费用的。当然,这些商业软体 是绝对不予许使用者将这些软体任意给他人使用。除非给予软体公司 相当的代价,使用者是绝对不可能拿到软体的原始程式的。
上述的种种都还是付钱就可以解决的,有些问题是钱也 乏术的。因为,当商业程式销售失败或远景不被看好时,使用者 所购置的软体就可能被开发者遗弃。此时,若想维持此软体的 正常运作,就必须自求多 了。 Stallman 所领导的 GNU 计划就是要脱离商业软体的种种 枷锁,这也是 GNU 计划所谓 ``free'' 的真谛。GNU 计划下 的任何软体,只要使用者能找到软体的来源,任何人都可以自由的 使用它。获得 GNU 软体的来源很多, 如 public archives、anonymous FTP、UUNET 等, 甚至任何一个装有 GNU 软体的地方都可以取得。GNU 计划下的软体, 不只提供软体的使用权,也提供软体的原始程式,任何人都可以根据 需要来修改程式,也可以尽己之力来找出程式的错误,使隶属於 GNU 的软体在大家的努力下能尽善尽美。 GNU 计划下的软体,是可不需 付费而享有使用权。GNU 对使用者唯一的要求就是,当使用者对於 GNU 计划下的软体做了进一步的修改时,仍必须维持 GNU 的精神, 就是对於修改过的软体仍然必须将其无条件的奉献出来 ,任何人都不可将修改过的 GNU 软体当成商品来买卖。 所以 Stallman 一直强调 GNU 计划下的软体是 free 的,而且 永远会是 free 的。 GNU 计划的最终目标是要完成一个全新的作业系统。 目前完成的有 EMACS text editor、debugger、yacc-compatible parser generator 以及 linker 等等;也完成了将尽三、 四十个公用程式(utilities);而 shell 也已经接近完成的阶段。目前只要等 kernel 和 compiler 完成, 就可以在 GNU 的系统上发展程式。
未来完成的 GNU 系统将可以执行 UNIX 上的所有程式, 但它却与 UNIX 系统不完全一致。 GNU 系统将改进 UNIX 系统的 缺失,使它使用起来更方便。例如,未来的系统将会有较长的档名, 档名会有版次等等;新的系统会使用 C 与 LISP 做为系统程式语言。
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 就是在如此的运作下,靠大家共同的努力来 提升品质,以达产品的稳定性。
EMACS 是一个 display 编辑器,因为每一个被编辑的文字都会 被显示在萤幕上。 EMACS 是一个 real-time 的编辑器,因为当新的文字被键入时, 萤幕会在非常短的时间内被更新。 EMACS 的编辑功能不只具备一般编辑器所有的功能,它还提供 如下的功能:
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 的特色。至於如何使用这些功能就 下列章节所要讨论的重点。 回主画面