Emacs GUI下不能输入中文

2 个赞

systemd 启动 emacs daemon 的时候不会读取环境变量,所以需要额外指定。

2 个赞

朋友,能否把这个bug 的mailing-list链接给我? 我想去吹吹风 …

喷了,我最近折腾了一下字体后也不行了。。。
MODULE的设置我放/etc/environment里的,LANG应该靠的是lightdm。
可能是字体问题:

> xlsfonts
-misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
6x13
cursor
fixed

添加了路径,xlsfonts确实可以列出来了,不过还是不行。而且不设置这个describe-char也是能看到字体的。。。

哈哈哈网上到处都提了这个bug但我真没找过这个mail list,不好意思啦

多谢,这个问题困扰我太久了,一直懒得读systemd的manual去解决,原来它的env得另设啊

原因

据说如果你的LC_CTYPE是英语,则在Emacs中无法使用Fcitx输入法,这是Emacs中的一个老问题。

解决

编辑/etc/default/locale

LC_CTYPE="zh_CN.UTF-8"

参考

3 个赞

此法对ibus也有效,今天在一台使用ibus的机器上,通过在service里添加XMODIFIERS和GTK_IM_MODULE,成功使得ibus得以激活,当然,变量值改成了ibus。不这样修改的话,ibus只能在直接启动emacs时使用,使用C/S模式的时候就激活不了,这么改动之后就一切都正常了。十分感谢。

安装 terminus-font 字体

如果使用的是 archlinux i3wm,这种方式可以解决:

bindsym $mod+Ctrl+x exec GTK_IM_MODULE=fcitx GTK_IM_MODULE=fcitx XMODIFIERS=@im=fcitx LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8 emacs

我也遇到了同样的问题。

最后发现是因为没有enable zh_CN.UTF-8的locale,

在/etc/locale里面开启中文,然后locale-gen,之后就好了。

2022年了搜了一堆网站,最终发现解决这个问题有好几个细节很多热门的答案都没有讲清楚,我的系统是Debian, 首先你要确定你有zh_CN.utf8这个locale,那些答案的设定才有意义

locale -a | grep -i zh_CN

如果没有,下面的命令安装

sudo apt install -y locales
dpkg-reconfigure locales 

弹出的图形界面直接选 all, 装完之后用之前的命令验证一下能找到 zh_CN.utf8 了 下面的命令行启动支持中文

LC_CTYPE="zh_CN.utf8" emacs

为了避免麻烦,每次都要写这堆前缀,可以改 ~/.bashrc 最后面加上

export LC_CTYPE="zh_CN.utf8"

改完重新加载一次生效

source ~/.bashrc

这个时候验证一下直接输入 emacs 命令启动,也能输入中文了

对于桌面图标,需要改一下 /usr/share/applications/emacs.desktop 文件

本来呢,直接把其中的 TryExec 和 Exec 前面都加上上面的那段 LC_CTYPE="zh_CN.utf8" 代码前缀就行了,但是因为 desktop 文件本身会识别等号,所以这段代码含等号就不能这样加了,先在/usr/bin 创建个新的命令

sudo touch /usr/bin/my_emacs
sudo chmod +rwx my_emacs

内部内容如下

#!/bin/bash
LC_CTYPE="zh_CN.utf8" emacs

然后修改 /usr/share/applications/emacs.desktop 中的 TryExec 和 Exec 为

TryExec=/usr/bin/my_emacs
Exec=/usr/bin/my_emacs

这样点击图标启动就也能支持中文了。 更多 .desktop 文件的细节,google linux freedesktop desktop file entry key

3 个赞

大家好,我的情况也很诡异。操作系统是FreeBSD 14.0 使用的是KDE Plasma 5桌面环境,fctix5在其它程序上基本正常,目前没有发现不能输入中文的情况。

环境变量在.xinitrc文件里面配置的

export XIM=fcitx

export XIM_PROGRAM=fcitx

export QT_IM_MODULE=fcitx

export GTK_IM_MODULE=fcitx

export XMODIFIERS=“@im=fcitx”

export SDL_IM_MODULE=fcitx

exec ck-launch-session dbus-launch --exit-with-session /usr/local/bin/startplasma-x11

然后进emacs-gui(用freebsd的 pkg install emacs命令安装的29.3版本 )之后不能输入中文,在stratch的buffer里面eval

(getenv “XIM”)

(getenv “XIM_PROGAM”)

(getenv “SDL_IM_MODULE”)

等等都和我预设在.xinitrc文件中的值一致,证明emacs-gui捕获了这些环境变量

(getenv “LC_CTYPE”)

的结果是 zh_CN.UTF-8, 这也表示emacs-gui正确的知道这个变量

但是中文输入法就是不起作用

我在终端里面

LC_CTYPE=zh_CN.UTF-8 emacs -Q

测试结果也不能使用中文输入

然后在终端里采用

emacs -nw 使用无GUI模式时则中文输入正常。

请问大家如何解决。

应该得装这些字体: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=xorg-fonts-misc-otb

这些字体我都装了的,虽然和ARCH上的包名字不同

pkg version | grep misc

输出结果为

font-arabic-misc-1.0.3_4           =
font-cursor-misc-1.0.3_4           =
font-daewoo-misc-1.0.3_4           =
font-dec-misc-1.0.3_4              =
font-isas-misc-1.0.3_4             =
font-jis-misc-1.0.3_4              =
font-micro-misc-1.0.3_4            =
font-misc-cyrillic-1.0.3_4         =
font-misc-ethiopic-1.0.4           =
font-misc-meltho-1.0.3_5           =
font-misc-misc-1.1.2_4             =
font-mutt-misc-1.0.3_4             =
font-schumacher-misc-1.1.2_4       =
font-sony-misc-1.0.3_4             =
font-sun-misc-1.0.3_4              =
xorg-fonts-miscbitmaps-7.7         =

搞定了,感谢前面提的字体问题,我想既然字体会影响这个,那么是不是因为freebsd的默认二进制发行版的编译选项没支持这个

于是我到/usr/port里面

make config

然后在编译选项里面取消了CAIRO支持(这个和XFT只能二选一)

确认以下编译选项被选中

OTF
XFT
XIM

不要选PGTK

然后回车确认

make deinstall emacs

make

make install

然后在KDE里面调用emacs的GUI版,正常了.

感谢回复.多谢