为emacs添加UCDOS拼音输入法

Sun Ge, sun_ge@yahoo.cn

$Id: ucdospy-for-emacs.sgml,v 1.1 2003/11/23 15:20:00 sunge Exp $


改编自debian-chinese-gb@lists.debian.org上一陈年老贴。注意,UCDOSPY输入码表UCDOSPY.tit版权不明。

1. 获取UCDOSPY输入码表

  1. 从debian或其他站下载 cxterm_5.1p1.orig.tar.gz
  2. 从中解出cxterm-5.1p1/dict/gb/UCDOSPY.tit

2. 制作UCDOSPY.el

2.1 从tit到el

$emacs
M-x titdic-convert RET
UCDOSPY.tit RET
在UCDOSPY.tit相同目录下生成了UCDOSPY.el 但是这个UCDOSPY.el并不能直接使用。

2.2 修改el

C-x C-f UCDOSPY.el
可以看到形如:

("anran" "(黯然)(岸然)")
("anshi" "(按时)(暗示)(暗室)")

要把它们变成:

("anran" ["黯然""岸然"])
("anshi" ["按时""暗示""暗室"])

于是利用 replace-regexp 第一次替换:
M-x replace-regexp RET
 "(\(.+\))")$RET
 ["\1"])RET
注意正则表达式开头的空格。

因为文件较大,需要等待一段时间后进行第二次替换:

M-x replace-regexp RET
)(RET
""RET
替换完毕。

但是还有以下的情况:


("xian" "线现先县限见显鲜献险陷宪纤洗掀弦铣腺锨仙咸贤衔舷闲涎嫌馅羡冼苋莶藓岘猃暹娴氙燹祆鹇痫蚬筅籼酰跣跹霰(西安)")

你需要手工变换为,

("xian" ["线""现"..."霰""西安"])

3. 安装ucdospy-punct输入法

将修改后的UCDOSPY.el复制到emacs的输入法目录, 编译为UCDOSPY.elc, 为了使ucdospy和punct联用,即以v开头可以输标点符号, 可以仿造py-punct.el制作一个ucdospy-punct.el:


;; quail/ucdospy-punct.el 
;; Quail packages for Chinese (ucdospy + extra symbols)
(require 'quail)

(load "quail/UCDOSPY")
(load "quail/Punct")

(quail-define-package
 "chinese-ucdospy-punct" "Chinese-GB" "UCDOS拼符"
 t
 "UCDOS汉字输入 拼音方案 and `v' for 标点符号输入

This is the combination of Quail packages \"chinese-ucdospy\" and \"chinese-punct\".
You can enter normal Chinese characters by the same way as \"chinese-ucdospy\".
And, you can enter symbols by typing `v' followed by any key sequences
defined in \"chinese-punct\".

For instance, typing `v' and `%' insert `%'.
")

(setcar (nthcdr 2 quail-current-package)
        (nth 2 (assoc "chinese-ucdospy" quail-package-alist)))

(quail-defrule "v" (nth 2 (assoc "chinese-punct" quail-package-alist)))

编译为ucdospy-punct.elc。

然后在.emacs加上:


(setq default-input-method "chinese-ucdospy-punct")

4. 使用

用"C-\"即可启动UCDOSPY了,用v可以输入符号。

比起mule自带的py-punct,总算可以输入词汇了。 再可根据自己实际情况,为该输入法添加词汇或符号。