LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1668|回复: 12

一个奇怪的问题:在英文环境中,emacs 23无法调用scim输入法

[复制链接]
发表于 2009-8-23 18:17:28 | 显示全部楼层 |阅读模式
debian sid中的emacs升级到了23后,发现无法调用scim了,
locale如下:
  1. LANG=en_US.UTF-8
  2. LC_CTYPE="en_US.UTF-8"
  3. LC_NUMERIC="en_US.UTF-8"
  4. LC_TIME="en_US.UTF-8"
  5. LC_COLLATE=zh_CN.UTF-8
  6. LC_MONETARY="en_US.UTF-8"
  7. LC_MESSAGES="en_US.UTF-8"
  8. LC_PAPER="en_US.UTF-8"
  9. LC_NAME="en_US.UTF-8"
  10. LC_ADDRESS="en_US.UTF-8"
  11. LC_TELEPHONE="en_US.UTF-8"
  12. LC_MEASUREMENT="en_US.UTF-8"
  13. LC_IDENTIFICATION="en_US.UTF-8"
  14. LC_ALL=
复制代码

每次都必须使用env LC_CTYPE="zh_CN.UTF-8" emacs 这个命令来启动emacs 23,这样才能调出输入法来;如果是直接用emacs这个命令来启动emacs 23,则死活也调不出输入法来。
发表于 2009-8-23 18:26:42 | 显示全部楼层
设置LC_CTYPE="zh_CN.UTF-8",其他保持不变不就可以了吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-23 18:41:44 | 显示全部楼层
Post by jinnee;2019508
设置LC_CTYPE="zh_CN.UTF-8",其他保持不变不就可以了吗


我不想把LC_CTYPE默认设置为zh_CN.UTF-8,能不能在~/.emacs里写入配置,使emacs 23在en_US环境下也能使用scim?
回复 支持 反对

使用道具 举报

发表于 2009-8-24 08:37:19 | 显示全部楼层
运行emacs时用 ”LC_CTYPE=zh_CN.UTF-8 emacs“   就行了
回复 支持 反对

使用道具 举报

发表于 2009-8-24 13:14:39 | 显示全部楼层
编辑 /etc/gtk-2.0/gtk.immodules
把文件末尾的
"/usr/lib/gtk-2.0/immodules/im-scim.so"
"scim" "SCIM Input Method" "scim" "/usr/share/locale" "ja:ko:zh"
修改为
"/usr/lib/gtk-2.0/immodules/im-scim.so"
"scim" "SCIM Input Method" "scim" "/usr/share/locale" "[color="Red"]en:ja:ko:zh"

用 gdm 之类东西的话,重启相应服务 /etc/init.d/gdm restart,然后重新登录,即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-24 15:40:28 | 显示全部楼层
回楼上,/etc/gtk-2.0中没有gtk.immodules 这个文件,我只好新建了一个。
你说的/usr/lib/gtk-2.0/immodules/im-scim.so也没找到(/usr/lib/gtk-2.0下没有immodules这个目录),只找到/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so,于是我的/etc/gtk-2.0/gtk.immodules内容最终如下:
  1. "/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so"
  2. "scim" "SCIM Input Method" "scim" "/usr/share/locale" "en:ja:ko:zh"
复制代码
结果重启后仍然不行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-24 16:22:02 | 显示全部楼层
还是不死心,受5楼启发,编辑/usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-gtk2-immodule.immodules,把en加进去:
  1. "/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so"
  2. "scim" "SCIM Input Method" "scim" "/usr/share/locale" "en:ja:ko:zh"
复制代码

接着编辑/usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-bridge-client-gtk.immodules,改为:
  1. "/usr/lib/gtk-2.0/2.10.0/immodules/im-scim-bridge.so"
  2. "scim-bridge" "SCIM Bridge Input Method" "scim-bridge" "/usr/share/locale" "en:ja:ko:zh"
复制代码

最后编辑/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
把里面的一行加上en:
  1. "/usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so"
  2. "xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:zh"
复制代码
重启后仍然不行,郁闷。。。
回复 支持 反对

使用道具 举报

发表于 2009-8-24 19:45:47 | 显示全部楼层
/etc/gtk-2.0/gtk.immodules 不存在,可以用下面命令建立
  1. gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
复制代码
然后按照上面方法修改。

其实您自己已给出另一种解法,下面方法也是有效的:
Post by debsir;2019806
还是不死心,受5楼启发,编辑/usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-gtk2-immodule.immodules,把en加进去:
  1. "/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so"
  2. "scim" "SCIM Input Method" "scim" "/usr/share/locale" "en:ja:ko:zh"
复制代码

这两种解法,英文环境下,基于 gtk 的程序都可以成功呼出 scim。
所以,要么您要使用基于 gtk 的虚拟终端执行 emacs,要么安装 emacs**-gtk。

qt 环境解法类似。

xim 环境下用环境变量指明输入法,应该也可以。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-24 21:12:06 | 显示全部楼层
谢谢聚焦深空,我照你的方法又试了一遍,重启后emacs 23在英文环境里依然没法调用scim(我是在gnome-terminal中执行emacs的)。
我装的就是emacs23-gtk:
  1. dpkg -l | grep emacs
  2. ii  emacs-goodies-el                     30.3-1                         Miscellaneous add-ons for Emacs
  3. ii  emacs23-bin-common                   23.1+1-2                       The GNU Emacs editor's shared, architecture dependent f
  4. ii  emacs23-common                       23.1+1-2                       The GNU Emacs editor's shared, architecture independent
  5. ii  emacs23-common-non-dfsg              23.1+1-1                       GNU Emacs shared, architecture independent, non-DFSG it
  6. ii  emacs23-el                           23.1+1-2                       GNU Emacs LISP (.el) files
  7. ii  emacs23-gtk                          23.1+1-2                       The GNU Emacs editor (with GTK+ user interface)
  8. ii  emacsen-common                       1.4.19                         Common facilities for all emacsen
复制代码

真的很奇怪,其他程序,在英文环境下,无论是gtk、qt还是tk/tcl均可以使用scim,唯独emacs不行。没办法,现在我只好把emacs给alias成“env LC_CTYPE="zh_CN.UTF-8" emacs“了。我想肯定有地方的设置有问题,无奈不知道在哪。
回复 支持 反对

使用道具 举报

发表于 2009-8-24 22:04:30 | 显示全部楼层
貌似是 emacs 快捷键影响,查查 emacs 中 ctrl-space 有没有键绑定。
有的话,要么修改 scim 呼出的快捷键,要么修改 emacs 的键绑定。

单打开一个 gnome-terminal,您现在应该能呼叫 scim 的,如果前面设置好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表