GNU Emacs 中文處理說明

 [image of a Philosophical Gnu] [ 簡體中文 | 繁體中文 ]

介紹

您應該要參閱 Emacs 快速指南 以取得操作 Emacs 編輯環境的基本介紹。

游標移動指令

最近我們將大部份的 中文標點符號 都視為合法的語法單位,這使得現在在 Emacs 上編輯中文與英文一樣地方便了。(作者後來在觀察源碼時發現:原本編輯簡體中文 gb2312 編碼時就己經有了最基本的語法功能了。但無論如何,目前我們為簡繁中文都取了必要的四十個相對應的標點符號來結構化中文文本。)

因此,原先建議的按照標點符號進行斷行,或使用英文標點符號的作法都沒有必要了。現在一個段落鍵入一個 RET 就好了。下面我們說明一下目前的游標移動指令,在中文文本中的相關議題:

C-a 往回移到行首(段落首) M-a 往回移到句首(中文句號也是中斷點)
C-e 往前移到行尾(段落尾) M-e 往前移到句尾(中文句號也是中斷點)

C-b 往回移一個字元(中文字) M-b 往回移一個英文字(到上一個中文標點符號)
C-f 往前移一個字元(中文字) M-f 往前移一個英文字(到下一個中文標點符號)
所以,即使是沒有使用「標記」〈markup〉的沒有格式的純文字中文文本,只要是在 Emacs 環境中編輯,基本上都具有一定程度的「結構」。下面作者提供一個助憶圖形給您作為參考:
Home〈到檔首〉
                                C-p
                                 |
C-a  --  M-a  --  M-b  --  C-b  +++  C-f  --  M-f  --  M-e  --  C-e
                                 |
                                C-n
End〈到檔尾〉
由於中文的標點間隔和英文字的字元數目大約可以類比,因此在邏輯上還說得通。就沒有格式的純文字檔案而言,如果還想要再進一步地結構化,大概就要以建立中文詞庫作為手段才有辦法了。大家繼續努力!〈但作者以為最近的進展,實際上已經使 Emacs 成為最佳的中文編輯器了。不知其它編輯器的使用者覺得如何?〉

輸入法

沒有了中文輸入法, Emacs 對於中文使用者一點用處都沒有。想要知道您可以使用哪些輸入法,您可以鍵入 C-x RET C-\ SPC ,接著 Emacs 會出現一個所有多國語文的輸入法列表窗格。然後您就可以在其中鍵入您所使用的輸入法名稱了。下面是作者的作法:(作者使用的是行列輸入法,名稱為 chinese-array30 。)
1. 設定預設的輸入法,將下面這一行加入到 ~/.emacs 檔案中:

(custom-set-variables '(default-input-method "chinese-array30"))

這樣子在啟動 Emacs 後,
您就可以直接以 C-\ 指令在英文輸入和行列輸入法之間切換了。

2. 但是有時候用行列打不出來,需要切換成注音輸入法。
   有兩種方式可以達成這個目的:

   a. C-x RET C-\ chinese-zozy RET
   b. C-u C-\ chinese-zozy RET

作者建議您使用第二種方式,因為它同時也是作為兩種輸入法間切換的指令。
接下來您只要鍵入 C-u C-\ RET 就可以在行列和注音這兩者間作切換了。
(注意:中英輸入法間的切換還是以 C-\ 指令為之。)

以後我們在不同中文輸入法間作切換將可以 C-u C-u C-\ 達成,
原本作者是建議以 M-\ 來補足這個想法,
但是 M-\ 很不幸已經作為 delete-horizontal-space 指令了。
不然 C-\ 搭配 M-\ 不是很漂亮嗎?

這樣子您應該可以理解如何使用中文輸入環境了吧!
當然,您必須將行列改為自己喜歡的輸入法。

如果您找不到自己喜歡的輸入法,那麼您可以:

1. 自己造一個(相關文獻在  .../emacs/leim/quail/ 。)
2. 利用現成的輸入法檔案做出一個
   ( .../emacs/lisp/international/titdic-cnv.el 。)
   只要是 cxterm 的 *.tit 和 xcin 的 *.cin
   有提供的輸入法都可以。
   但是作法上對於終端使用者而言並不十分“自動”,
   因此現階段可能還是需要志願者協助進行才有辦法。

不知道 cxterm 和 xcin 的開發人員是否可以協助提供。
(對了, cxterm 的行列輸入法有個小臭蟲,應該和誰聯繫?)

幫忙引導 Emacs 的未來開發

記得,您永遠可以發揮影響力來幫忙引導 Emacs 的未來開發。如果您想要看到 Emacs 擁有哪些功能,請告訴我們。這裡有幾封由作者作出建議的郵件片斷,提供您作為如何提出建議的參考: 關於這些建議,經由 RMS 的幫忙最後由日本的 Ken'ishi HANDA 先生完成實作工作。如果您有興趣知道他對哪些檔案作出了修改,這裡是 HANDA 先生的說明:
* international/characters.el: Fix syntaxes of gb2312 and big5.

* language/japan-util.el (sentence-end-save): Variable deleted.
(setup-japanese-environment-internal): Don't setup sentence-end.
(exit-japanese-environment): Function deleted.

* language/japanese.el ("Japanese"): Delete `exit-function'.

* textmodes/paragraphs.el (sentence-end): Add Chinese and Japanese
characters.


Index: quail.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/quail.el,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -c -r1.126 -r1.127
cvs server: conflicting specifications of output style
*** quail.el	4 Feb 2003 13:09:38 -0000	1.126
--- quail.el	12 Mar 2003 02:37:07 -0000	1.127
***************
*** 1912,1923 ****
      (let ((default-enable-multibyte-characters enable-multibyte-characters))
        (or (buffer-live-p quail-guidance-buf)
  	  (setq quail-guidance-buf (generate-new-buffer " *Quail-guidance*"))))
!     (let ((name (quail-name))
! 	  (title (quail-title)))
        (with-current-buffer quail-guidance-buf
  	;; To show the title of Quail package.
! 	(setq current-input-method name
! 	      current-input-method-title title)
  	(erase-buffer)
  	(or (overlayp quail-overlay)
  	    (progn
--- 1912,1923 ----
      (let ((default-enable-multibyte-characters enable-multibyte-characters))
        (or (buffer-live-p quail-guidance-buf)
  	  (setq quail-guidance-buf (generate-new-buffer " *Quail-guidance*"))))
!     (let ((package quail-current-package))
        (with-current-buffer quail-guidance-buf
  	;; To show the title of Quail package.
! 	(setq quail-current-package package
! 	      current-input-method (quail-name)
! 	      current-input-method-title (quail-title))
  	(erase-buffer)
  	(or (overlayp quail-overlay)
  	    (progn
當然,並不是每一個建議都是可行的。但是您永遠有作夢的權利!特別是當有可能讓大家的日子過得更好時,請務必告訴我們您作了什麼夢。

也請通知您所使用的〔中文〕散佈件的開發者,請他們更新 Emacs 為目前的版本,並將下述的鏈接提供給他們:
如何下載 Emacs 套件


返回 GNU 首頁

請將有關 自由軟體基金會 與 GNU 的 查詢 與 問題 送到 gnu@gnu.org。您也可以使用 其它方法聯繫 自由軟體基金會。

請將有關網頁的意見送到 webmasters@www.gnu.org,其它問題則送到 gnu@gnu.org

請將有關中文網頁的意見送到 chinese-coordinators@gnu.org,其它問題則送到 chliu@gnu.org

Copyright (C) 2003 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
【本文允許在不變更文件內容的前提下刊登在任何形式的媒體中,但需保留此聲明。】

作者:劉 昭宏 <chliu@gnu.org>
驗證:馬 雪萍
請將有關翻譯的問題送到 GNU/CTT翻譯人員

Updated: $Date: 2003/03/21 20:40:21 $ $Author: chstoneliu $