[原创]在ubuntu dapper 6.06 Bate2上安装emacs-snapshot(解决Gnome下中文输入)

Vim、Emacs配置和使用
回复
头像
runpin
帖子: 647
注册时间: 2005-09-29 11:13
来自: Boston, MA

[原创]在ubuntu dapper 6.06 Bate2上安装emacs-snapshot(解决Gnome下中文输入)

#1

帖子 runpin » 2006-05-06 19:28

在ubuntu dapper 6.06 Bate2上安装emacs-snapshot

1)系统
语言环境:zh_CN.UTF8(中文默认)

系统直接由ubuntu官方网站下载的安装文件刻盘后安。
安装模式为server/expert -> xserver-xorg/x-window-system -> gnome-core。
软件库为http://us.arhive.ubuntu.com/ubuntu/ dapper。

拷贝windows的tahoma、simsusn、simhei和Microsoft Yahei四个字体,用来美化中文。(方法略)

2)安装组件
(全部用synaptic,没有自己编译)
没有安装mule-ucs。
主要是emacs-snapshot-bin-common 1:20060114-1。
其他包括emacs-goodies以及写C程序、Python和PHP需要的el文件。

3)中文问题
安装完成后无法正常显示中文,fcitx无法输入。这是因为没有指定emacs使用何种中文字体。
xlsfonts | grep gb命令查询,发现系统自带核心中文字体为:

代码: 全选

[color=darkred]-isas-fangsong ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0
-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
-isas-song ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0
-isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
-isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-0
hanzigb16fs
hanzigb16st
hanzigb24st[/color]
在家目录下新建文件.Xdefaults,添加如下内容:

代码: 全选

Emacs.Font: fontset-16
Emacs.Fontset-0:-*-*-medium-r-*-*-16-*-*-*-*-*-fontset-16,\
chinese-gb2312:-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1,\
chinese-cns11643-5:-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0,\
chinese-cns11643-6:-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0,\
chinese-cns11643-7:-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
保存后,在终端输入:xrdb -load ~/.Xdefaults,或者重启X。
在家目录下新建文件.emacs,加入语句:(global-set-key (kbd "C-SPC") 'nil)
emacs可以正常显示GBK编码中文,fcitx可以输入gb2312编码中文。

另:不知道为什么fcitx无法输入GBK,虽然输入法列表中可以看到GBK编码中文,但输入后emacs显示为方框。只好卸载fcitx,安装scim。

4)更换字体
这一步不是必须的,但是fangsong ti模样是在不敢恭维,所以换成simsun18030。
拷贝simsun18030.ttc到家目录下msfonts目录(新建目录,主要不想调整/etc/fonts/fonts.conf文件)。
终端中cd到此目录,使用mkfontscale命令:

代码: 全选

$cd /home/myname/msfonts
$mkfontscale
生成fonts.scale文件。用gvim打开,内容为:

代码: 全选

11
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-ascii-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-2
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-3
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gb18030.2000-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso10646-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso8859-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-jisx0208.1983-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-jisx0208.1990-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-koi8-r
没有gbk,添加一行,改成:

代码: 全选

[color=red]12[/color]
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-ascii-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-2
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-cns11643-3
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gb18030.2000-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
[color=red]SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gbk-0[/color]
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso10646-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso8859-1
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-jisx0208.1983-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-jisx0208.1990-0
SimSun18030.ttc -misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-koi8-r
保存文件,相同目录下把它再拷贝为一个新文件,重命名为fonts.dir

把msfonts绝对路径添加到/etc/X11/xorg.conf中(找到 Section "Files"):

代码: 全选

Section "Files"
......
FontPath "/home/myname/msfonts"
......
EndSection 
重新启动X,在.Xdefaults中把字体改为:

代码: 全选

Emacs.Font: fontset-16
Emacs.Fontset-0:-*-*-medium-r-*-*-16-*-*-*-*-*-fontset-16,\
chinese-gb2312:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1,\
korean-ksc5601:-*-medium-r-normal-*-16-*-ksc5601*-*,
chinese-cns11643-5:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-6:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-7:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0
保存后,在终端输入:xrdb -load ~/.Xdefaults,或者重启X。

emacs已经可以正常显示和输入GBK编码的中文。.emacs文件中无须设置任何编码方案。

另:很多帖子反映,在gnome中,emacs可以显示中文,但是没办法输入,表现是Ctrl-Space被占用,即使在.emacs文件中加入(global-set-key (kbd "C-SPC") 'nil)命令依旧显示“C-SPC is undefined”,无论是fcitx还是scim。但其他窗口管理器(比如wmaker)或者桌面系统(比如KDE或者Xfce4)正常。这并不完全是gnome的问题。如果.Xdefaults字体设置不正确,或者中英文字号不同,那么Ctrl-Space肯定失灵。

我以前在ubuntu 5.04和5.10中使用的都是上述设置,没有任何问题。此方法不适用于emacs21,因为它不支持utf8。
附件
安装选项
安装选项
中文输入
中文输入
GBK支持
GBK支持
头像
Tenyears
帖子: 2245
注册时间: 2005-06-30 15:46
来自: 成都

#2

帖子 Tenyears » 2006-05-07 22:17

不错。 :P
Humanity to others // 己所不欲,勿施与人
Laptop: ThinkPad X220 --- Win7 Home / Ubuntu 12.04
Desktop: Win7/Ubuntu 12.04
Server: Ubuntu12.04
头像
runpin
帖子: 647
注册时间: 2005-09-29 11:13
来自: Boston, MA

#3

帖子 runpin » 2006-05-08 8:42

谢谢。

写这么多内容,其实关键只在.Xdefaults文件中字体的设置。其他的比如.emacs中可以完全不添加任何东西。

这里的字体设置一定要是xlsfonts | grep中搜索到的自己系统中存在的字体,并且即使是存在这种字体,也必须设置这种字体正确的字号。如果根本就没有这种字体,或者说核心字体中没有列出我们要求emacs使用的字体,更或者你设置了一个不正确的字号,那么中文显示输入肯定有问题。

有的帖子和网上很多文章有关于要求设置.emacs文件的要求,比如要求添加语言环境为:

代码: 全选

[color=darkred](set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'cn-gb-2312)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
;(set-selection-coding-system 'chinese-iso-8bit-with-esc)
(set-selection-coding-system 'cn-gb-2312)
(set-default-coding-systems 'euc-cn)
(setq locale-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'euc-cn)
(setq default-process-coding-system
'(euc-cn . euc-cn))
(setq-default pathname-coding-system 'euc-cn)[/color]
或者设置为UTF8,比如:

代码: 全选

[color=darkred](setq current-language-environment "UTF-8")
(setq default-input-method "chinese-py")
(setq locale-coding-system 'utf-8')
(set-terminal-coding-system 'utf-')
(set-keyboard-coding-system 'utf-8')
(set-selection-coding-system 'utf-8')
(prefer-coding-system 'utf-8')[/color]
这是因为安装的是emacs21,或者是他们使用的是不同的Linux发行版(比如红帽子或者Debian等等),也有可能是语言环境不同,比如/etc/environment中设置了英文和GBK混合,或者默认的是英文、繁体中文等等。不能说这些设置有什么问题,但是如果我们使用的发行版是ubuntu,并且默认的语言环境是zh_CN.UTF8,那么就我个人的安装经验而言,至少在我的系统上,按照上述方法安装在gnome下是不会有任何问题的。

而且,如果在我的系统中,如果.emacs中完全可以不添加(global-set-key (kbd "C-SPC") 'nil)这条语句,这并不影响Ctrl-Space的调用。

emacs有很多设置方法,比如字体设置就可以不用.Xdefaults文件,可以在.emacs中设置,比如:

代码: 全选

(create-fontset-from-fontset-spec
(concat
"-*-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier,"
"chinese-gb2312:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gb2312*-*,"
"mule-unicode-0100-24ff:-*-simsun-medium-r-*-*-14-*-*-*-c-*-iso10646*-*,"
"korean-ksc5601:-*-*-medium-r-*-*-14-*-*-*-*-*-ksc5601*-*,"
"chinese-cns11643-5:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"chinese-cns11643-6:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"chinese-cns11643-7:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"sjis:-*-medium-r-normal--14-*-jisx0208*-*")) 

(set-default-font "fontset-courier")
(setq default-frame-alist
(append
'((font . "fontset-courier")) default-frame-alist))
但这种方法会延迟emacs的启动,在emacs22中没有作用。至于windows版本的emacs,则设置方式完全是另外一回事了。

emacs的问题很多,这涉及到核心字体的问题、Linux的语言环境以及lisp语言等等,不是花一两天学习或者copy&paste一些现成的代码就可以弄清楚的,等我们可以完全驾驭它的时候,估计头发都白了。
头像
Tenyears
帖子: 2245
注册时间: 2005-06-30 15:46
来自: 成都

#4

帖子 Tenyears » 2006-05-08 9:23

........
我现在基本操作还没完全掌握。。。
Humanity to others // 己所不欲,勿施与人
Laptop: ThinkPad X220 --- Win7 Home / Ubuntu 12.04
Desktop: Win7/Ubuntu 12.04
Server: Ubuntu12.04
3bio
帖子: 13
注册时间: 2006-07-18 0:44

#5

帖子 3bio » 2006-07-19 12:39

按照楼主的方法安装simsun字体(从windows中copy过来后改名为simsun18030.ttc),然后xlsfonts |grep gb得到:

-adobe-itc zapf dingbats-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
-adobe-zapf dingbats-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
-adobe-zapfdingbats-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
-isas-fangsong ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0
-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
-isas-song ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0
-isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
-isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-0
-itc-itc zapf dingbats-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
-misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0
-misc-simsun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
-urw-dingbats-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
-urw-dingbats-regular-r-normal--0-0-0-0-p-0-adobe-fontspecific
hanzigb16fs
hanzigb16st
hanzigb24st

然后在.Xdefaults中设置

Emacs.Font: fontset-16
Emacs.Fontset-0:-*-*-medium-r-*-*-16-*-*-*-*-*-fontset-16,\
chinese-gb2312:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1,\
korean-ksc5601:-*-medium-r-normal-*-16-*-ksc5601*-*,
chinese-cns11643-5:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-6:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-7:-misc-simsun 18030-medium-r-normal--16-*-*-*-*-*-gbk-0

再打开emacs23(用软件库中的deb包安装的),还是不能使用输入法,按control space还是显示undefined。
到底是什么原因呢?
会不会字体没正确安装,因为下面太多 “0” 了:
-misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0
-misc-simsun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
是字号的问题?怎么修改字号呢?

谢谢
头像
runpin
帖子: 647
注册时间: 2005-09-29 11:13
来自: Boston, MA

#6

帖子 runpin » 2006-07-21 6:39

emacs23的配置方法和其他版本的不同,你可以查询google看看。
xphenix
帖子: 35
注册时间: 2006-05-04 15:52

#7

帖子 xphenix » 2006-09-09 0:39

字体太大了。。。能不能把16 改成 14呢???????应该怎么做?
if
帖子: 62
注册时间: 2006-09-12 1:25

#8

帖子 if » 2006-11-04 19:41

这么好的贴为什么不置顶呢?我折腾了一个星期的emacs中文化问题终于搞定了
赞一下楼主,并郑重请求版主将此帖置顶
:em38
头像
Tenyears
帖子: 2245
注册时间: 2005-06-30 15:46
来自: 成都

#9

帖子 Tenyears » 2006-11-07 15:49

if 写了:这么好的贴为什么不置顶呢?我折腾了一个星期的emacs中文化问题终于搞定了
赞一下楼主,并郑重请求版主将此帖置顶
:em38
同意,置顶,并对标题有所修改。
Humanity to others // 己所不欲,勿施与人
Laptop: ThinkPad X220 --- Win7 Home / Ubuntu 12.04
Desktop: Win7/Ubuntu 12.04
Server: Ubuntu12.04
回复