Ubuntu 下 Emacs 中无法激活搜狗输入法

那就是被占了… Emacs 快捷键基本都是 Ctrl 开头的。 我 电脑全局至少都是 三个键开始的 Ctrl shift 还有四个的 Ctrl ALT shift的

很奇怪哎 我系统的切换源快捷键是: Super + 空格 但是实际使用上是 Ctrl + SPC 才有效

以前用英文的 Ubuntu 会输入不了中文, 后来换成中文的就好啦.

键是不是被重定义了啊。我Mac 可以把左边的 caps lock 定义成 Ctrl…

我来当个搬运工吧,我啥原理也不懂,但是以前在Ubuntu和Mint上各种折腾也解决过这个问题。 方法就是网上大家说的,export LC_CTYPE=zh_CN.UTF-8,实在不会的,可以设置语言为中文(也就相当于 export LANG=zh_CN.UTF-8),然后什么都是zh_CN.UTF-8了,就不用再担心环境变量的问题了。 另外,Ubuntu和Mint上在安装fcitx以后,在系统的输入法设置里面,可以看到fcitx项有红色的提示,大概意思是,建议安装fcitx一些附加的增强组件,这些安装上后,设置emacs输入中文成功的几率好像要大些。

最近换了Archlinux,搞了几天以后,今天终于也把emacs上调用fcitx输入法的问题解决了,我用的是搜狗输入法,关键的配置来自于这里: http://tech.memoryimprintstudio.com/issues-with-fcitx-sougou-for-chinese-input-in-emacs/

disable ./Xresources while it inclues: emacs*useXIM: false

In script file .xprofile, add following lines to support GTK+ and Qt modules Fcitx in Arch Linux. export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx

估计这个设置对其他linux系统也是很有用的,当然,export LC_CTYPE=zh_CN.UTF-8 也是必须的

5 个赞

对了,Linux上还有一个坑,就是有的情况下(比如我的Archlinux+LXDE)无论你的bash下怎么设置环境变量,你的图形界面的LC_CTYPE永远是en_US,这就导致你无论怎么设置,从图形界面上启动emacs,就是激活不了fcitx输入法。

验证的方法就是,图形界面上启动emacs后,在emacs里 M-x shell-command 回车,然后输入 locale 查看当前emacs环境的locale设置(spacemace配置)。

然后修改的办法就是除了设置shell的环境变量以外,还要设置图形界面的环境变量: vim ~/.xprofile export LANG=en_US.UTF-8 export LC_CTYPE=zh_CN.UTF-8

或者

vim /etc/locale.conf LANG=en_US.UTF-8 LC_CTYPE=zh_CN.UTF-8

这个坑其他linux上也要注意一下

4 个赞

可能我没有说清楚,我使用的就是简体中文版UBUNTU

中文ubuntu的话感觉占用快捷键的可能性比较大

先用我说的方法看一下,emacs启动过后,emacs里运行locale,看看环境是什么样,语言是中文,也不代表LC_xxx都是中文,都是可以设置不一样的

输入法(fcitx?)config里,改一下输入法的快捷键试一下呢,比如改成Ctrl+shift

晚上回家了才能测试,公司里的电脑没这问题。 到时会把测试结果贴上来

测试结果如下: LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh:en_US:en LC_CTYPE=zh_CN.UTF-8 LC_NUMERIC=zh_CN.UTF-8 LC_TIME=zh_CN.UTF-8 LC_COLLATE=“zh_CN.UTF-8” LC_MONETARY=zh_CN.UTF-8 LC_MESSAGES=“zh_CN.UTF-8” LC_PAPER=zh_CN.UTF-8 LC_NAME=zh_CN.UTF-8 LC_ADDRESS=zh_CN.UTF-8 LC_TELEPHONE=zh_CN.UTF-8 LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=zh_CN.UTF-8 LC_ALL=

  1. 设置输入法的快捷键,看是否快捷键冲突
  2. 系统输入法设置,fcitx设置里,把提示建议安装的那些附加组件都装上,我记得是有的

In script file .xprofile, add following lines to support GTK+ and Qt modules Fcitx in Arch Linux. export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx

如果你的系统不是 .xprofile 这个配置文件,试试放到其他配置文件里,只要让它进环境变量就好

这个帖子估计还会有人遇到类似问题, 我也回复下。
最简单的办法是替换emacs的启动文件,就是那个.desktop文件 在/usr/share/applications/下面。
直接改成Exec=env LC_CTYPE=zh_CN.UTF-8 emacs25 %F
加粗部分是新增的内容。
我看到帖子的内容也尝试去修改自己的profile或者是系统的locale,结果非常坑,也不知道是哪里设置的,家目录设置的始终不生效,系统级别也跟我得到的结果不一致,再加上我并不希望修改系统的设置,现在的办法看起来是最完美的了。本来也是emacs的一个bug。。

5 个赞

这问题我也遇到过,貌似是 emacs 在 LC_CTYPE 为 en 的情况下无法打开 fcitx ,据说是一个很老的 bug 了,后来直接换 rime 输入法了。

另一个解决方法, 以 root 身份运行 dpkg-reconfigure locales,将 locale 配置为 zh_CN.UTF-8.

是 ibus-rime ?Rime 本身沒有前端,ibus 是官方支持的前端界面,但 fcitx-rime 更流行。

多谢!使用export LC_CTYPE=zh_CN.UTF-8之后,就可以在ubuntu中使用搜狗输入法了。

2 个赞

tx,在 /etc/profile 下配置

  1. 在/etc/environment文件中追加export LC_CTYPE="zh_CN.UTF-8"
  2. 执行sudo locale-gen
  3. 重启
1 个赞

这个解决方案完美

已经21年了。。 站在各位大佬的肩膀上很快就解决了问题。 我之前使用的是中文环境,但是家目录有很多中文不太爽就切换到了英文,这是问题的原因,就是locale。 主要的两种方式都试了,一种是从命令行启动:

$ LC_CTYPE=zh_CN.UTF-8 emacs --daemon
$ emacsclient --create-frame --no-wait

还有就是locate到emacs的.desktop然后追加LC_CTYPE=zh_CN.UTF-8环境变量:

Exec=env LC_CTYPE=zh_CN.UTF-8 BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/emacs_emacs.desktop /snap/bin/emacs %F