Fcitx
Fcitx (Flexible Input Method Framework) ──即小企鹅输入法,它是一个以 GPL 方式发布的输入法平台,可以通过安装引擎支持多种输入法,支持简入繁出,是在 Linux 操作系统中常用的中文输入法。它的优点是,短小精悍、跟程序的兼容性比较好。
安装[编辑 | 编辑源代码]
输入法引擎[编辑 | 编辑源代码]
Fcitx 内置的输入法支持中文拼音和基于字符表的输入(例如五笔)。根据语言的不同,可以选择其他输入法引擎。
中文[编辑 | 编辑源代码]
在 Fcitx 支持的拼音输入法中,内置拼音响应速度最快。Fcitx 同样支持流行的第三方拼音输入法以提供更好的整句输入效果。
- fcitx-sunpinyin包 在输入速度和输入精度之间有较好的平衡。
- fcitx-libpinyin包 算法比 sunpinyin 先进。
- fcitx-rime包, 即著名中文输入法 Rime IME的 Fcitx 版本。但它不支持 Fcitx 本身的 #特殊符号和 #快速输入功能,自定义设置请参见官方,
- fcitx-googlepinyin包, Google 拼音输入法 for Android。
- fcitx-sogoupinyinAUR, 搜狗输入法for linux——支持全拼、简拼、模糊音、云输入、皮肤、中英混输入。官方网址
- fcitx-cloudpinyin包 可以提供云拼音输入的支持,支持 Fcitx 下的所有拼音输入法,Fcitx-rime 除外。
- fcitx-chewing包 为 Fcitx 添加 chewing (繁体中文注音) 输入引擎支持。依赖 libchewing包。
- fcitx-baidupinyinAUR, 百度拼音输入法的fcitx wrapper。
- fcitx-table-extra包 Fcitx 的一些额外码表支持,包括仓颉 3, 仓颉 5, 粤拼, 速成, 五笔, 郑码等等。
日文[编辑 | 编辑源代码]
- fcitx-mozc包, 为 Fcitx 添加 mozc (日语) 输入引擎支持,mozc 是 Google 日语输入法的开源版本。
- fcitx-kkc包, 一款新的基于 libkkc包 的日文假名与汉字输入引擎。
- fcitx-skk包, 一款基于 libskk包 的日文假名与汉字输入引擎。
- fcitx-anthy包, 为 Fcitx 添加 anthy (日语) 输入引擎支持。
其它语言[编辑 | 编辑源代码]
- fcitx-hangul包, 为 Fcitx 添加 hangul (韩语) 输入引擎支持。
- fcitx-m17n包, 为 Fcitx 添加 m17n (多国语言码表) 输入引擎支持。
- fcitx-unikey包, 为 Fcitx 添加 unikey (越南语) 输入引擎支持。
- fcitx-sayura包, 为 Fcitx 添加 sayura (僧伽罗语) 输入引擎支持。
输入法模块[编辑 | 编辑源代码]
Fcitx 提供对 Qt 提供了输入法模块,请根据需要安装, fcitx-qt4AUR 和 fcitx-qt5包. 软件包组 fcitx-im包组 包含了全部模块。如果没有安装对应的模块,一般还是可以在大部分程序中使用输入法的。不过很可能出现从无法光标跟随、无法显示预编辑字符串、无法输入甚至程序卡死等情况。
某些程序不使用 Qt 的输入法模块,这些程序包括:
- 使用 Tk, motif, 甚至 xlib 的程序
- Emacs、Opera、OpenOffice、LibreOffice、Skype、Wine、Java、Xterm、urxvt、WPS
其它[编辑 | 编辑源代码]
- fcitx-ui-light包, Fcitx 的轻量 UI。
- fcitx-table-other包, Fcitx 的一些更奇怪的码表支持,包括 Latex, Emoji, 以及一大堆不明字符等等。
您还可以在 Arch User Repository 找到更多以上软件包的 Git 版以及其它。
使用[编辑 | 编辑源代码]
桌面环境下自动启动[编辑 | 编辑源代码]
如果您用 XDG 兼容的桌面环境,比如 KDE, GNOME, Xfce, LXDE, 那么当您安装好 Fcitx 并重新登录后,Fcitx 应该会自动启动。如果没有的话,可以打开控制台并运行fcitx
。为检验 Fcitx 是否正常运行, 打开一个程序,比如 leafpad, 按 CTRL+Space 激活 Fcitx 并试着输入几个字。
如果 Fcitx 没有随桌面环境自动启动,或者您想修改下 Fcitx 启动参数,请用桌面环境提供的自动启动工具配置,或者直接编辑用户目录~/.config/autostart/
下的 fcitx-autostart.desktop
文件以确认自动启动是否被禁用。如果用户目录下的文件并不存在,您可以复制自动启动文件 /etc/xdg/autostart/fcitx-autostart.desktop
到用户目录:
cp /etc/xdg/autostart/fcitx-autostart.desktop ~/.config/autostart/
如果您使用的桌面环境并不自动支持 XDG 自动启动, 请在您使用的启动脚本里面添加 fcitx
以实现自动启动。
例如,你使用i3或sway窗口管理器,可以在配置文件中添加exec --no-startup-id fcitx
来自动启动输入法。
当 iBus 等其它输入法程序同时启动且开启了 Xim 支持时, 可能导致 Fcitx 无法启动,请确保已禁用了其它输入法程序的自动启动。
设置输入法的环境变量[编辑 | 编辑源代码]
请按以下方式设置环境变量,如果没有这些环境变量,程序可能默认使用 XIM 协议。qt5 程序不支持 XIM 所以必须配置使用 IM 模块,其它程序也有可能出现问题。
建议通过 /etc/environment
设置环境变量,pam-env 模块会在所有登录会话中读取此文件,包括 X11 会话和 Wayland 会话。详情请参考 man 8 pam-env
。
/etc/environment
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
~/.pam_environment
文件。部分登录管理器(如 LightDM)也支持读取 ~/.xprofile
,可以这样设置:
~/.xprofile
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx
重新登录后让环境变量生效。
如果 fcitx 没有自动启动,请将 fcitx &
加入 ~/.xinitrc
, 如果 fcitx &
不启动,在后面加一个延时 sleep 2
。
- 请不要在
.bashrc
设置这些环境变量。bashrc
只应用于交互性 bash 会话的初始化,并不应用于非交互性脚本或 X 会话的初始化。 - 如果 Qt 使用 fcitx 有问题,请执行 qtconfig (qtconfig-qt4),在输入法配置中将 fcitx 设置为 "Default Input Method"。
Xim[编辑 | 编辑源代码]
要在 Gtk/Qt 程序中用 xim, 请将上面的变量改成如下的值:
GTK_IM_MODULE DEFAULT=xim QT_IM_MODULE DEFAULT=xim
重新登录后让环境变量生效。
/usr/lib/gtk-2.0/2.10.0/immodules.cache
作为缓存文件。如果设置了 GTK_IM_MODULE_FILE
环境变量或在安装后修改了配置,请清掉环境变量并使用 /usr/bin/gtk-query-immodules-2.0 --update-cache
更新缓存。Qt5 程序不支持 XIM 所以必须配置使用 IM 模块配置[编辑 | 编辑源代码]
配置工具[编辑 | 编辑源代码]
Fcitx 提供了若干图形界面的配置程序:KDE 中的 kcm-fcitx包, 基于 GTK+3 的 fcitx-configtool包。
安装完配置工具fcitx-configtool包之后打开配置工具的方法是用终端运行fcitx-config-gtk3,打开这个配置工具之后还要添加中文输入法。对于新安装的英文系统,要取消只显示当前语言的输入法(Only Show Current Language),才能看到和添加中文输入法(Pinyin, Libpinyin等)。
如果要手工编辑 fcitx 的配置文件,请确保系统中并没有在运行 fcitx ,否则手工编辑的配置内容可能丢失。
替换自带的经典界面[编辑 | 编辑源代码]
Fcitx 支持使用 kimpanel 协议的界面,以提供更好的桌面整合体验。
- Gnome-Shell:安装 gnome-shell-extension-kimpanel-gitAUR, 它提供了类似 ibus-gjs 的用户体验,其候选框界面将会采用 Gnome-Shell 的主题风格, 同时在状态栏中增加 Fcitx 的输入法状态图标。
- KDE:kimtoy包 可以使用搜狗输入法和 Fcitx 本身的皮肤。
输入法[编辑 | 编辑源代码]
您可以在配置界面工具中添加/移除启用的输入法。在输入法图标上右键可以打开配置。
列表第一项将作为「未激活」状态使用,请将此项设为键盘布局输入法,比如「(键盘 - 英文)」,第一项后面的输入法都是活动输入法。。
在全局配置中,触发输入法快捷键仅在未激活输入法及最后一个活动输入法之间切换。切换输入法快捷键默认仅在不同的活动输入法间切换,但是在高级设置中可以将非激活输入法加入切换选择。切换输入法快捷键需要按顺序按下,例如 ALT_SHIFT
仅在先按 alt
再按 shift
后生效。
扩充内置拼音词库[编辑 | 编辑源代码]
用户配置拼音词库在 ~/.config/fcitx/pinyin
, 其中 pybase.mb
为拼音单字库,pyphrase.mb
为拼音词库。如果这两文件并不存在,直接将您下载的词库放置到 /usr/share/fcitx/pinyin
. 重启 Fcitx 即可。
皮肤[编辑 | 编辑源代码]
下载皮肤并解压缩到下面任一目录,如果没有可以新建目录:
/usr/share/fcitx/skin ##全局设置 ~/.config/fcitx/skin #特定用户设置
云拼音[编辑 | 编辑源代码]
安装后重启 Fcitx 即可,所选的云拼音输入结果会自动添加到当前输入法的词库中。提醒:建议在fcitx设置里面将“云拼音来源”由Google改为“百度”,Google国内访问不是很顺畅。
启用云拼音后,从云拼音获得的候选词会默认添加到候选词列表中的第二个,显示位置可以通过云拼音的设置配置。如果云拼音的结果和本地输入法给出的结果一致,云拼音后选项会和本地产生的候选项自动合并,不会产生重复的候选项。
若安装fcitx-cloudpinyin后,在配置程序里却没有看见云拼音,记得勾上“高级”复选框。这时云拼音会显示出来,再勾上云拼音。
提示与技巧[编辑 | 编辑源代码]
快捷键[编辑 | 编辑源代码]
部分常用默认快捷键:
Ctrl+Space
激活输入法- 左
Shift
临时切换到英文 Ctrl+Shift
输入法间切换-/=
向前/向后翻页Shift+Space
全角、半角切换
Vim[编辑 | 编辑源代码]
如果您经常在 Vim 下使用 Fcitx, 可以安装 vim-fcitxAUR 插件,或者在 ~/.vimrc
添加如下代码。以退出插入模式时,自动关闭 Fcitx, 反之则反:
"##### auto fcitx ########### let g:input_toggle = 1 function! Fcitx2en() let s:input_status = system("fcitx-remote") if s:input_status == 2 let g:input_toggle = 1 let l:a = system("fcitx-remote -c") endif endfunction function! Fcitx2zh() let s:input_status = system("fcitx-remote") if s:input_status != 2 && g:input_toggle == 1 let l:a = system("fcitx-remote -o") let g:input_toggle = 0 endif endfunction set ttimeoutlen=150 "退出插入模式 autocmd InsertLeave * call Fcitx2en() "进入插入模式 autocmd InsertEnter * call Fcitx2zh() "##### auto fcitx end ######
剪贴板[编辑 | 编辑源代码]
Fcitx 自带剪贴板,其快捷键为 Ctrl + ;
, 小小功能拯救世界。
特殊符号[编辑 | 编辑源代码]
创建 ~/.config/fcitx/data/pySym.mb
, 文件内容示范如下:
#第一个字符为“#”的行是注释 #格式:编码 符号 #编码只能为小写字母,经拼音解析后最长为10(如py为2,pinyin也为2) #数学符号 sxfh + sxfh - sxfh < sxfh = sxfh > sxfh ± sxfh × sxfh ÷ sxfh ∈ sxfh ∏ sxfh ∑ sxfh ∕ sxfh √ sxfh ∝
直接输入某编码,可以匹配出对应的特殊符号。
快速输入[编辑 | 编辑源代码]
确保在 ~/.config/fcitx/config
里把 SemiColonAction
修改为 QuickPhrase
。
创建 ~/.config/fcitx/data/QuickPhrase.mb
, 文件内容示范如下:
#第一个字符为“#”的行是注释 #格式:编码 符号 dianhua 123456789 youbian 123456 dizhi 中华人民共和国北京市长安街一号 aowu ┗<(=`O′=)>┛ mobai m<(_ _)>m baobao <(=′▽')爻 (`▽`=)> baobao <(=*′д`)爻(′д`*=)> qiangbi ▄︻┻┳═一…… ☆<(= ̄□ ̄=!)> xiaoku 😂 canyue 🌖 xuehua ❄
按 ;
并输入编码,可实现快速输入,自然也能用来当颜文字库和emoji表情库。
;
开头之外,没有其它限制。fcitx-remote[编辑 | 编辑源代码]
fcitx-remote 是可以控制 fcitx 状态的命令行工具,位于 fcitx包 安装包中。
常见的应用包括用 fcitx-remote -s imname
, 将输入法切换到 imname
。要获得正确的 imname
,执行 fcitx-diagnose 并查看 "## Input Methods:" 对应的输出。
通过 Fcitx 输入特殊字符[编辑 | 编辑源代码]
参见:Fcitx5#通过 Fcitx5 输入特殊字符。该内容同样适用于 Fcitx
故障排除[编辑 | 编辑源代码]
停用或修改 Extra key for trigger input method[编辑 | 编辑源代码]
设置位于全局配置标签,默认是 SHIFT, 也就是说两边的 shift 键都会修改输入法。这个设置可能在输入大写字母的时候引起误触,而且可能会在安装后恢复成默认值。要确保进行的修改没有被覆盖,请设置配置文件为只读:# chattr +i ~/.config/fcitx/config
。
首先诊断问题所在[编辑 | 编辑源代码]
当你遇到任何 fcitx 有关的问题,比如 ctrl+space 在有的程序中不能工作,首先应该用 fcitx-diagnose
命令诊断问题的原因。
fcitx-diagnose
会列出所有 fcitx 正常运行所需的前提条件,从输出结果中通常可以找到问题的原因。
在网上(比如在 irc 或者论坛里)询问别人关于 fcitx 配置的问题时,也请首先提供你的 fcitx-diagnose
输出结果(比如贴到 pastebin 服务),这将加速别人帮你找到问题所在。
Emacs 无法使用输入法[编辑 | 编辑源代码]
emacs会找出一份字体列表发送给输入法,以便输入法绘制输入框。 那么会出现两种情况:
- 1.找不到字体
emacs 默认 fontset 会使用 "-*-*-*-r-normal--14-*-*-*-*-*-*-*" 字体 (terminus, 75dpi 等等,可以通过 xlsfonts
命令查看)。
解决方法:安装xorg-mkfontscale包后重启, 它将创建字体文件索引。通过 xlsfonts
命令查看是否存在emacs默认字体,如果不存在可尝试安装类似字体后重启,比如ttf-dejavu包。
- 2.找到太多字体
找到太多字体会导致某些地方溢出,无法呼出输入法。终端下并不会遇到此现象。
将LC_CTYPE
设为 zh_CN.UTF-8
,会减少找到的字体数目。
解决方法:在.xprofile或.xinitrc中添加以下内容后重新登录或者重启
export LC_CTYPE=zh_CN.UTF-8
使用locale
命令可查看是否成功更改。
更详细的情况参见Emacs 为什么要设置 LC_CTYPE,Yichao Yu给emacs写的Patch。
在 gnome-terminal中 Ctrl + Space
不能调出输入法[编辑 | 编辑源代码]
使用 GDM 3.16 启动 GNOME,可能在某些程序中无法使用 Ctrl + Space
调出输入法。解决方法是修改GSettings配置
gsettings set \ org.gnome.settings-daemon.plugins.xsettings overrides \ "{'Gtk/IMModule':<'fcitx'>}"
Ctrl + ;
会调出 Fcitx 的剪贴板[编辑 | 编辑源代码]
严格的说,这不是 BUG, Fcitx 的 Ctrl + ;
会覆盖很多用户自己的快捷键,特别是 Emacs 用户。有必要时,可以在配置界面中禁用剪贴板插件,或更改其激活快捷键。
fcitx-sogoupinyin 卡死、联想失败[编辑 | 编辑源代码]
如果您遇到下列的问题:
- 输入类似「安装」、「暗影」等 "a" 开头的词语,出现卡死的情况。
- 输入并不以拼音 "a" 开头的词语时,却出现「阿拉伯」、「阿里巴巴」等以 "a" 开头的错误联想词语等。
可以通过删除 ~/.config/fcitx/sogou
下的所有内容的方式解决。
在某些程序下输入法总是被切换到美语键盘[编辑 | 编辑源代码]
比如在 XMind 下,当 Enter 出新结点时,输入法就会被切换到美语键盘,不得不按 Ctrl-Space 以重新切回中文输入法。
启动 Fcitx 的 Config, 在 Global Config 选项卡下的「Share State Among Window」选项里选中「PerProgram」或「All」即可解决。