摘录─GBK环境下Emacs与外部程序间拷贝、粘贴问题的解决方法[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

现在言归正传, 编辑 .Xdefaults 或者 .Xresources 把其中关于 Emacs 的
内容设为:

Emacs.Fontset-0: -*-bitstream-medium-r-normal-*-20-*-*-*-*-*-fontset-20,\
chinese-gb2312:-*-medium-r-normal--20-*-gb2312*-*,\
mule-unicode-0100-24ff:-*-medium-r-normal--20-*-*-*-*-*-iso10646*-*,\
korean-ksc5601:-*-medium-r-normal-*-20-*-ksc5601*-*,\
chinese-cns11643-5:-*-medium-r-normal--20-*-gbk*-*,\
chinese-cns11643-6:-*-medium-r-normal--20-*-gbk*-*,\
chinese-cns11643-7:-*-medium-r-normal--20-*-gbk*-*,\
sjis:-*-medium-r-normal--20-*-jisx0208*-*

Emacs.Font: fontset-20

注意: 其中的 \ 是断行符, 它的后面(在同一行中)不要跟随任何字符(newline 除外).

上面给出的 X resources 的作用是告诉 Emacs 创建一个名为 fontset-20 的 fontset,
并且让 Emacs 把 fontset-20 作为缺省的 fontset 使用.
你可以把其中的 20 替换成其它的数字(比如 16 或者 24, 但最好选用大小一致的字体,
否则你的文本在多语种文字同时出现的情况下会显得参差不齐)以获得不同的字体大小,

在此之前, 你可以用命令
xlsfonts
查看你的 X server 或者 font server 是否提供了你想要的
XLFD(X Logical Font Description) 字体.

关于这些配置的具体含义可以参看 Emacs Manual 中题为
X Resources 和 Defining Fontsets (事实上你可以此定义好几个 fontset)的部分,
这里不再赘述.

编辑完 X resources 配置文件后可以重新启动 X 会话或者使用命令
xrdb -merge ~/.Xdefaults
或者
xrdb -merge ~/.Xresources
以载入新的 X resources.

注: 关于字体安装
其实只有 GBK 字体是其中的关键, 其它字体视需要与否选择安装.

我们前面的 fontset 需要一些特定的 XLFD 字体, 可能效果不一定是最好的,
或者不对你的胃口, 但至少可以用.

gb2312 (中文): Debian 中对应的软件包为 xfonts-intl-chinese
gbk (中文): 网上有很多关于这个的帖子, 大家自己去找吧.
iso10646 (unicode): 同上(通常如果你把上面的安装好了,这个也就有了).
jisx (日文): Debian 中对应的软件包为 xfonts-intl-japanese
korean-ksc5601 (韩文): Debian 中对应的软件包为 xfonts-baekmuk
ascii (英文): Debian 中对应的软件包为 ttf-bitstream-vera

上面我只列出了 Debian 中对应的软件包, 是因为我手头只有 Debian 系统,
其他诸如 Gentoo, Redhat/Fedora, Mandrake, SuSE, Slackware 等我并不
熟悉, 如果你不是 Debian 的用户请在你自己的系统上按照类似的名字寻找
相应的字体软件包, sorry了.
如果你在自己的 distro 上找到了对应的字体软件包, 请来信告诉我, 谢谢.

[4] 如果你只使用 console(非GUI), 你不用关心这一步.

采用 XIM(X Input Method) 输入 GBK 汉字:
用户可以用 SCIM 和 fcitx 等目前广受欢迎的中文(SCIM 似乎还支持其它语言的输入)
XIM 输入法软件输入 GBK 汉字.
这需要配置一下用户的环境, 包括把 Locale 设置成 zh_CN.GBK 等.
具体的设置方法请参考 SCIM 或者 fcitx 自己的使用说明.

当你在 Emacs 中使用 XIM 软件作为中文输入的途径时, 你会遇到这样一个问题:
C-SPC 现在对应于 XIM 的激活而不再是 set-mark-command 了, 解决的途径有两个:
一种是让 XIM 的激活改用其它的快捷键, 可惜我没有找这方面的方法, 如果你知道
请发信告诉我.

另一种改变 set-mark-command 在 Emacs 中的 key binding, 这个很容易在 Emacs
里做到, 我们已经知道即使不作什么设置 C-@ 就已经对应着 set-mark-command 了.
如果你和我一样对 C-@ 作为 set-mark-command 的 binding 不喜欢的话, 也可以用
把 global-set-key 函数把 set-mark-command 绑定其它你喜欢的按键序列上去.
这里, 我推荐用下面的 elisp 代码把 set-mark-command 绑定到 S-SPC 上.

(global-set-key [?\S- ] 'set-mark-command)

注意: 在 terminal 模式下这个 key binding 可能不起作用, 因为你的(仿真)终端极
可能根本不识别 S-SPC 这种按键组合.

[5] 这一部分的内容你可能根本不需要用到.
如果你使用 XIM 来作中文输入, 你可以不做这步.

chinese-ucdospy 让 Emacs 本身提供一个GBK编码的拼音输入法, 这个输入法的词库
大部分取自 ucdos 拼音.

把 ucdospy.el, gbk.el, ucdospy1.el ,ccepy.el 和
define-phrase.el 复制到目录 $HOME/emacs 中.

把下面的内容添加到你的 Emacs 的 init file 中去.

;;; Load Libraries for Chinese Input Method
(load-file "~/emacs/ucdospy.el")
(load-file "~/emacs/gbk-mb.el")
(load-file "~/emacs/ucdospy1.el")
(load-file "~/emacs/ccepy.el")

(load-file "~/emacs/define-phrase.el")
(global-set-key "\C-cd" 'quail-define-new-ruler-from-line)
(global-set-key "\C-cn" 'quail-define-new-ruler-for-name-of-people-from-line)
(if (file-exists-p user-py-file)
(load-file user-py-file))
(if (file-exists-p user-people-names-file)
(load-file user-people-names-file))

相应的中/英文输入状态用 C-\ 来切换.
See ucdospy.el for the detail of the key binding of chinese-ucdospy.


[6] 启动 Emacs:
1. 在 console 上可以用命令 emacs 直接启动字符界面的 Emacs. 你需要保证你
的 console 能够显示/输入 GBK 汉字, 为此你可以使用 zhcon 或者 cce 等
console 中文环境.
2. 在 X window 环境下用命令 emacs 可以直接启动 X11 界面的 Emacs, 估计
大多数人使用的是这种情况.
3. 在 X window 环境的支持中文的仿真终端(如 crxvt, mlterm, gnome-terminal 等)
中, 用命令 emacs -nw(如果你没有使用 -nw 选项, 就会变成上一种情况) 来启动
字符界面的 Emacs.

苏勇 <yoyosu@ustc.edu.cn>

本文关键:摘录─GBK环境下Emacs与外部程序间拷贝、粘贴问题的解决方法
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top