转自: https://www.douban.com/note/688353496/
版权归作者所有,任何形式转载请联系作者。
作者:Steven(来自豆瓣)
来源:https://www.douban.com/note/688353496/
笔者用emacs已经好多年,一直在arch上开发。困扰了很长一段时间的中文问题,今天解决了,把解决的路径分享下,希望有帮助。
-
关于你用什么输入法,不管你是Ibus也好fcitx也好,应该是无所谓的。
-
emacs不解决编码问题,必须要在启动的时候设置LC_CTYPE=zh_CN.utf8,当然这个设置对不对,你要看你的locale -a
的结果(注意这里有的系统是zh_CN.UTF-8,有的是zh_CN.utf8,看locale -a的结果设置),得开进程前env LC_CTYPE=zh_CN.utf8,很多教程,我不做多赘述。不确定自己是否设置正确,可以/bin/emacs -Q,进去后ALT-X,getenv,LC_CTYPE看是否是zh_CN.utf8。
- 别忘了设置$HOME/.xprofile。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
由于不同的桌面环境,比如用i3的朋友就需要设置到.xinitrc里。
这一步是为了让你的GTK和QT应用能直接呼出fcitx,这一步不设置啥都出不来。
- 字体问题:也可以直接看这个设置:https://wiki.archlinux.org/index.php/Fcitx_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
Emacs 默认 fontset 会使用 "----r-normal--14-------" 字体 (terminus, 75dpi 等等,可以通过xlsfonts命令查看),如果您并没有匹配的字体,无法呼出 Fcitx.
-
恭喜你基本快成功了,如果这时候你还是呼不出fcitx或者ibus输入法。就可能跟你的桌面环境或者字体有关系了。
笔者用的fcitx,先说下fctix,用fcitx-diagnose诊断下是否有问题,emacs26是依赖gtk3的,只要gtk3设置了,就基本没问题了。那么还是呼出不了fcitx是怎么回事,这个论坛给了我答案,我系统的字体设置设置出了问题。可以根据这里的设置来解决这个问题:https://wiki.archlinux.org/index.php/Fonts#Installation
- 设置你系统载入的字体配置(这部分看上面链接即可)
/etc/fonts/local.conf
里面加入fallback的字体配置
- 确认你的fcitx进程存在。可以通过fcitx-diagnose来查看有没有问题,其实emacs也不一定非要设置编码格式,我取消了zh_CN.UTF8也能呼出输入法,这个目前还不太明白。
Done!,重启电脑,/bin/emacs -Q,测试下能不能呼出输入法,能呼出输入法中文写不到emacs一定是LC_CTYPE或者字体问题。不能呼出就是桌面环境问题或者.xprofile的问题。弄个空的emacs测试,有可能你的一些自己配置的lisp搞乱了环境,笔者就因为是fork的别人的emacs, emacs -Q 跑的没问题,后来排除了问题。