我也用了呆神的PYIM插件, 的确是很不错的输入法。不过我除了英文,中文还有芬兰语。。平时常写的东西需要3种输入法切换,所以内置输入法不适合我
ubuntu下的确没有这个问题。 @xianghx 给的方法解决了输入法不跳出的问题。 不过很多emacs设置跟着就用了zh_CN。。需要手动再配置。。实在代价有点大。。
我慢慢尝试用terminal下的emacs看效果如何吧。
再次感谢各位大大的帮忙!
我的新装的 Ubuntu 16.04 (默认的 Unity 和英文环境)也有类似的问题,切换至 fcitx-googlepinyin 的按键确实是被操作系统接受了,但是输入法还是调不出来。其他的 GTK 程序比如 gedit 之类的都没有这个问题。真是太奇怪了。
根据 Arch wiki 上的提示(Emacs 无法使用输入法),一个 work-around 是把 LC_CTYPE
设为中文,我用的是下面的方法:
$ LC_CTYPE=zh_CN.UTF-8 emacs --daemon
$ emacsclient --create-frame --no-wait
(背景:我只习惯用 GUI 下的 Emacs,不然的话鼠标、菜单、按钮、字体等都用不上了。)
只设置 LC_CTYPE
的话,ispell 还是能正常工作(对我来说是能检测英文)的。
目前还是不清楚问题出在哪里,以及如何解决。
谢谢, 的确是LC_ALL的原因! 是我用的一个别人的fish shell配置把LC_ALL也设置进去了。
非常感谢, 这两个命令很cool, 我已经开始用了!
请教一下一个跟 Emacs 无关的话题, 如果在国内的话,芬兰语使用的场合一般有哪些? 芬兰语实际使用时语法真的必需那么复杂吗? 可以私信联系一下吗?谢谢!
除了LC_CTYPE还有一个原因 就是字库的原因 emacs从X中找不到你要的字体
新建 /etc/X11/xorg.conf.d/fonts.conf 写入
Section "Files"
FontPath "/usr/share/fonts/misc"
FontPath "你的/字体/路径""
EndSection
记得在你的字体目录下
mkfontdir
mkfontscale
fc-cache -v
上面的方法都试过一遍了,还是不行。。。
给 Emacs 设置 LC_CTYPE
应该有用吧,我的 Ubuntu 用上了 fcitx,除 GUI Emacs 外的其它程序都没问题,设置了 LC_CTYPE
之后 Emacs 也正常了。我发现 ~/.profile
中设置的环境变量,GUI 程序也能继承到,所以我现在不用在命令行设置它了。
但这毕竟还是一个 work-around。我依旧不清楚究竟是怎么回事(这个锅到底该谁来背?Emacs、Fcitx、Gtk+、X 还是别的程序)。
系统ubuntu16.04, gnome桌面, fcitx.输入法, Emacs GUI. 上面的方法我都试过了一次了, shift键切换搜狗输入法都不行. 后来我发现win+space可以掉出ibus输入法, 现在将就用. 我尝试过卸载ibus, 不过会把ubuntu desktop也删掉, 我只好再装一次ubuntu desktop, 然后ibus也被装上了.
emacs 有个古老 bug 导致 fcitx 不能在 LC_CTYPE 为 en 时打开,为什么这个问题还是讨论了这么久捏……
XIM for Emacs: Your LC_CTYPE is set to en_US.UTF-8 instead of one of zh, ja, ko. You may not be able to use input method in emacs because of an really old emacs bug that upstream refuse to fix for years.
ibus 没有这个问题,我在 .xprofile 里运行 fcitx 后 加入 LC_CTYPE=zh_CN.UTF-8 exec emacs --daemon=workspace0 &
后 emacsclient 也可以使用 fcitx
谁可以帮我看看吗…困扰好久, 折腾了好久都不行, 还是想用fcitx.
现在的情况是我可以使用win+spc
来调出ibus来使用中文输入法, 但是不能C-spc(已经屏蔽原来的按键nil)和shift都调不出fcitx.
尝试过:
- LC_CTYPE=zh_CN.UTF-8 emacs无效, 把系统语言改成中文环境都不行(第一次我我设成中文环境fcitx可以过, 但是我还是希望设成英文环境, 所以又改成英文环境了, 但是不行, 以后设成中文环境都不可以了)
- 在.zshrc里加入(,类似的文件也设置过了, 还有.profile, etc的一个profile)
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
fcitx-diagnose
会少一个错误, 但是fcitx和ibus都调不出
3. 改emacs的字体为中文的字体, 没反应
4. 卸载iBus, 但它和ubuntu destkop绑定的, 卸载它x就打不开了
gnome-shell, ubuntu 16.04, emacs25
附fcitx-diagnose
# System Info:
1. `uname -a`:
Linux E430 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
2. `lsb_release -a`:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
3. `lsb_release -d`:
Description: Ubuntu 16.04.2 LTS
4. `/etc/lsb-release`:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
5. `/etc/os-release`:
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
6. Desktop Environment:
Desktop environment is `gnome3`.
7. Bash Version:
BASH_VERSION='4.3.48(1)-release'
# Environment:
1. DISPLAY:
DISPLAY=':0'
2. Keyboard Layout:
1. `setxkbmap`:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+us:2+inet(evdev)+ctrl(nocaps)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
2. `xprop`:
_XKB_RULES_NAMES(STRING) = "evdev", "pc105", "us,us", "", "terminate:ctrl_alt_bksp,ctrl:nocaps"
3. Locale:
1. All locale:
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
zh_CN
zh_CN.gb2312
zh_CN.utf8
zh_SG.utf8
2. Current locale:
LANG=en_US.UTF-8
LANGUAGE=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=zh_CN.UTF-8
4. Directories:
1. Home:
/home/ycs
2. `${XDG_CONFIG_HOME}`:
Environment variable `XDG_CONFIG_HOME` is not set.
Current value of `XDG_CONFIG_HOME` is `~/.config` (`/home/ycs/.config`).
3. Fcitx Settings Directory:
Current fcitx settings directory is `~/.config/fcitx` (`/home/ycs/.config/fcitx`).
5. Current user:
The script is run as ycs (1000).
# Fcitx State:
1. executable:
Found fcitx at `/usr/bin/fcitx`.
2. version:
Fcitx version: `4.2.9.1`
3. process:
Found 2 fcitx processes:
2241 fcitx
2299 fcitx-dbus-watc
4. `fcitx-remote`:
`fcitx-remote` works properly.
# Fcitx Configure UI:
1. Config Tool Wrapper:
Found fcitx-configtool at `/usr/bin/fcitx-configtool`.
2. Config GUI for gtk2:
**Config GUI for gtk2 not found.**
3. Config GUI for gtk3:
Found `fcitx-config-gtk3` at `/usr/bin/fcitx-config-gtk3`.
4. Config GUI for kde:
# Frontends setup:
## Xim:
1. `${XMODIFIERS}`:
**Environment variable XMODIFIERS is "@im=ibus" instead of "@im=fcitx". Please check if you have exported it incorrectly in any of your init files.**
**Please set environment variable XMODIFIERS to "@im=fcitx" using the tool your distribution provides or add `export XMODIFIERS=@im=fcitx` to your `~/.xprofile`. See [Input Method Related Environment Variables: XMODIFIERS](http://fcitx-im.org/wiki/Input_method_related_environment_variables#XMODIFIERS).**
Xim Server Name from Environment variable is ibus.
2. XIM_SERVERS on root window:
Xim server name is the same with that set in the environment variable.
## Qt:
1. qt4 - `${QT4_IM_MODULE}`:
Environment variable QT4_IM_MODULE is set to "fcitx" correctly.
2. qt5 - `${QT_IM_MODULE}`:
**Environment variable QT_IM_MODULE is "ibus" instead of "fcitx". Please check if you have exported it incorrectly in any of your init files.**
**You may have trouble using fcitx in qt5 programs.**
**Please set environment variable QT_IM_MODULE to "fcitx" using the tool your distribution provides or add `export QT_IM_MODULE=fcitx` to your `~/.xprofile`. See [Input Method Related Environment Variables: QT_IM_MODULE](http://fcitx-im.org/wiki/Input_method_related_environment_variables#QT_IM_MODULE).**
3. Qt IM module files:
Found fcitx im module for Qt5: `/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so`.
Found fcitx im module for Qt4: `/usr/lib/x86_64-linux-gnu/qt4/plugins/inputmethods/qtim-fcitx.so`.
## Gtk:
1. gtk - `${GTK_IM_MODULE}`:
Environment variable GTK_IM_MODULE is set to "fcitx" correctly.
2. `gtk-query-immodules`:
1. gtk 2:
**Cannot find `gtk-query-immodules` for gtk 2**
**Cannot find fcitx im module for gtk 2.**
2. gtk 3:
**Cannot find `gtk-query-immodules` for gtk 3**
**Cannot find fcitx im module for gtk 3.**
3. Gtk IM module cache:
1. gtk 2:
Found immodules cache for gtk `2.24.30` at `/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules.cache`.
Version Line:
# Created by /usr/lib/x86_64-linux-gnu/libgtk2.0-0/gtk-query-immodules-2.0 from gtk+-2.24.30
Found fcitx im modules for gtk `2.24.30`.
"/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-fcitx.so"
"fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*"
2. gtk 3:
Found immodules cache for gtk `3.20.8` at `/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache`.
Version Line:
# Created by /usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 from gtk+-3.20.8
Found fcitx im modules for gtk `3.20.8`.
"/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-fcitx.so"
"fcitx" "Fcitx (Flexible Input Method Framework)" "fcitx" "/usr/share/locale" "ja:ko:zh:*"
4. Gtk IM module files:
1. gtk 2:
All found Gtk 2 immodule files exist.
2. gtk 3:
All found Gtk 3 immodule files exist.
# Configuration:
## Fcitx Addons:
1. Addon Config Dir:
Found fcitx addon config directory: `/usr/share/fcitx/addon`.
2. Addon List:
1. Found 34 enabled addons:
fcitx-autoeng
fcitx-autoeng-ng
fcitx-chttrans
fcitx-classic-ui
fcitx-clipboard
fcitx-cloudpinyin
fcitx-dbus
fcitx-freedesktop-notify
fcitx-fullwidth-char
fcitx-fullwidth-char-enhance
fcitx-googlepinyin
fcitx-imselector
fcitx-ipc
fcitx-keyboard
fcitx-kimpanel-ui
fcitx-lua
fcitx-notificationitem
fcitx-pinyin
fcitx-pinyin-enhance
fcitx-punc
fcitx-punc-ng
fcitx-quickphrase
fcitx-remote
fcitx-sogoucloudpinyin
fcitx-sogoupinyin
fcitx-spell
fcitx-sunpinyin
fcitx-table
fcitx-unicode
fcitx-vk
fcitx-x11
fcitx-xim
fcitx-xkb
fcitx-xkbdbus
2. Found 0 disabled addons:
3. Addon Libraries:
All libraries for all addons are found.
4. User Interface:
Found 2 enabled user interface addons:
fcitx-classic-ui
fcitx-kimpanel-ui
Kimpanel process:
2390 sogou-qimpanel
## Input Methods:
1. Found 3 enabled input methods:
fcitx-keyboard-us
sogoupinyin
googlepinyin
2. Default input methods:
You have a keyboard input method "fcitx-keyboard-us" correctly added as your default input method.
# Log:
1. `date`:
2017年 07月 09日 星期日 18:44:56 CST
2. `~/.config/fcitx/log/`:
total 0
3. `~/.config/fcitx/log/crash.log`:
`~/.config/fcitx/log/crash.log` not found.
有一瞬间可以了, 但当我从evil-normal-state切到evil-insert-state后又不行了
我把桌面切换到xfce居然可以了
4. Config GUI for kde:
# Frontends setup:
## Xim:
1. `${XMODIFIERS}`:
**Environment variable XMODIFIERS is "@im=ibus" instead of "@im=fcitx". Please check if you have exported it incorrectly in any of your init files.**
**Please set environment variable XMODIFIERS to "@im=fcitx" using the tool your distribution provides or add `export XMODIFIERS=@im=fcitx` to your `~/.xprofile`. See [Input Method Related Environment Variables: XMODIFIERS](http://fcitx-im.org/wiki/Input_method_related_environment_variables#XMODIFIERS).**
Xim Server Name from Environment variable is ibus.
2. XIM_SERVERS on root window:
Xim server name is the same with that set in the environment variable.
关键的是怎么把这里设置对了就好了
现在是暴力hack了, 把ibus服务命令去掉再重启, 终于可以了
sudo mv /usr/bin/ibus-daemon /usr/bin/ibus-daemon.bak
fish-shell中。
alias emacs="env LC_CTYPE=zh_CN.UTF-8 emacs"
funcsave emacs
emacs
谁用谁知道。
不要同时开 fcitx 和 ibus,会冲突的:joy:
我在 openSUSE 下也是同样的问题,在终端和浏览器都正常唯独 Emacs 不能输入中文。 删除了默认安装的 ibus,解决。
日,更新 arch 后也出现了这个问题,我没有安装 ibus ,真是奇怪了