中文编辑环境

以上所谈的种种,都较适合英文的编辑环境,现在来讨论一个 适用於中文编辑的环境。在 EMACS 下可使用的中文环境有二种, 一个就是 EMACS 本身,另一个是 EMACS 的姐妹品 - Mule。 现在就开始讨论这二个中文的编辑环境。


Emacs 下的中文编辑 .emacs 档的设定

EMACS 的环境下要使用中文,必需先做些设定。 因为,中文内码是使用 8 位元位元组,所以必需将系统所使用之 位元组型式设为 8 位元,才可以在中文环境下使用 EMACS 。 设定系统使其适合使用中文的环境,必需视所使用的作业系统与 所使用的 Shell script file 有关,现简述如下:

除了以上针对 Shell script file 的设定外,要在 EMACS 的环境
输入与显示中文尚必需在 EMACS 的起始档 ``.emacs'' 中加入
如下的设定:
(set-input-mode (car (current-input-mode))
          (nth 1 (current-input-mode))
          0)
  (standard-display-8bit 160 255)
虽然经由这些设定,可以使 EMACS 在中文的环境下使用,
但其处理方式还是以英文的模式来处理中文。换言之,就是将二个
byte 所组成的中文字,依然视为二个 byte 的英文字来处理。
这种处理方式,自然有其不便之处。例如,在处理换列时就会
遇到一些问题。因为 EMACS 将中文视为是二个 byte 的字元共同组合
而成。所以,当一列只剩下一个 byte 时, EMACS 会将中文切割
成二个独立的 byte 分别处理之。此时中文字的第一个 byte 会在
此列的最後一个栏位,而下一列的第一个栏位则出现此字的第二个 byte 。
所以,在 EMACS 的环境下中文字很容易被切割,而不知其为何物。
因为 EMACS 处理中文的方式与处理英文无异,所以删除一个
中文字,等於删除二个 byte 的字元(character)。换言之,
一个中文字若使用删除字元的指令 ( Ctrl-d)来删除,必需
使用两次的  Ctrl-d 才能将一个中文字删除。

因为 EMACS 在处理这些七位元之外的字型有其基本上
的问题,所以就有 Mule 的诞生。以下就介绍 Mule 的使用法。

中文化的 EMACS Mule

Mule "The MULtilingual Enhancement of GNU Emacs" 的简称,它是针对非英语系国家的使用者而设计的 EMACS。 对中文的使用者有很大的助益。 要使 EMACS 能真正的中文化,最好的方法就是安装 Mule。 目前最新的 Mule 版本是 Mule 2.0 版(1994 8 6 日)。 Mule 的设计是以 EMACS 为基础。至於 EMACS 的 启始档案 - ``emacs'',也就是 Mule 的启始档案。换言之, 使用 Mule 不需在 ``.emacs'' 档中做任何的设定。所以 Mule 可将 EMACS ``.emacs'' 档做为其启始档。 若无特殊需求,也可不使用 ``.emacs'' 档。 想要取得 Mule 的软体,可以 ``anonymous ftp'' 至以下几个地方取得:

etlport.etl.go.jp [192.31.197.99]: /pub/mule

ftp.mei.co.jp [132.182.49.2]: /public/free/gnu/emacs/mule

sh.wide.ad.jp [133.4.11.11]: /JAPAN/mule/mule-1.0

ftp.funet.fi [128.214.6.100]: /pub/gnu/emacs/mule

cs.huji.ac.il [132.65.16.10]: /pub/gnu/mule

前已述及 Mule ``MULtilingual Enhancement to GNU Emacs''。 它不只处理七位元(7 bits)的 ASCII 字型(ASCII Characters) 以及 ISO Latin-1 的八位元字型(8bits)。它更能处理日文、中文 (GBBig5)、韩文(16 bits ISO2022 标准)、泰文 (TIS620) 以及越文(VISCII VSCII)。目前适合吾人使用的繁体中文系统 是以 BIG-5 为主。 Mule 有如此多的语文可供使用,所以在一个文字档案中, 使用者可以混合使用这些不同的语言。使用这些语文,只需 借由 Mule 所提供的输入法,将各种不同的文字输入即可。 如果是在 terminal emulator 下使用 Mule(如 cxtermexterm kterm), 可使用此 emulator 所提供的输入方法。 其实使用 Mule 的方法与使用 EMACS 的方法是一样的, EMACS 的指令在 Mule 中都可以使用。二者最大的差别,就是 Mule 加入了输入法的使用。欲在 EMACS 的环境下使用中文,首先要起动 中文系统(例如倚天中文系统),而输入法就是使用中文系统所提供 的输入法了。使用 Mule 时也是先起动中文系统(此处仍是以text-only 的终端机为讨论的重点,若使用中文的 X-window 则不需先行启动中文 系统)。,但中文的输入法,则由 Mule 来提供。换言之, Mule 有自已的中文输入法。现在就来讨论如何使用 Mule 的输入法。 要在 Mule 中可以方便的使用输入法,最好将如下的资料加入 ``.emacs'' 档中。 (set-default-file-coding-system *big5*) (set-display-coding-system *big5*) (set-file-coding-system-for-read *big5*) (quail-mode 1) (quail-use-package "zozy") 以上的资料会在使用 Emacs 时产生错误的讯息,解决的办法是将以下的资料加入% ``.emacs'' 档中。 (cond ( (boundp 'mule-version) ;; mule 用的设定区 ;; mule 设定开始 (set-default-file-coding-system *big5*) (set-display-coding-system *big5*) (set-file-coding-system-for-read *big5*) (quail-mode 1) (quail-use-package "zozy") ;; mule 设定结束 ) ;; emacs 用的设定区 ( t ;; emacs 设定开始 (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) (standard-display-8bit 160 255) ) ;; emacs 设定结束 ) Mule 所提供适合中文使用的输入法有,仓颉、注音、拼音、 倚天注音以及标点符号等五种。使用这些输入法的方式 如下:

  1. Ctrl-x - Ctrl-k - Shift-m RET
  2. 连续键入 ``Ctrl-x'' ``Ctrl-k'' ``Shift-m'' 三个指令後,按下 RETecho area 会出现 Quail Package: 此时就可键入所要使用的输入法。
  3. 输入法的名称如下所示:
  4. 要使用任何一种输入法,只要在 echo area 处的 "Quail Package:" 後,键入所欲使用的输入法的名称即可。

  5. Ctrl-] self-insert-command
  6. 在任何一种的输入法的状态下,都可切换至英文的状态下。 只要键入 ``Ctrl-]'' 就可使中英文互换。
Mule 对使用中文的人来说,可说是中文化的 EMACS ,而 Mule 
的诞生,确实给予中文的编辑者很大的方便。Mule 的使用方法,
除了输入法与 EMACS 略有不同之外,其它与 EMACS 一样。所以,
已熟悉 EMACS 的人,使用 Mule 可说是易如反掌。如果只安装 Mule 
而无安装 EMACS 的系统,想要使用 EMACS ,只要进入 Mule 後
一直维持英文的状态就与使用 EMACS 一样了。

EMACS 的入门手册介绍到此,已可暂告一段落。
这并不意谓著 EMACS 的介绍已经穷尽了。其实,有关 EMACS 的
话题还有许多,这里只是环绕在编辑的层面略作解说。

回主选单