跳转到内容

为应对本站因各种原因无法访问,建议用户安装 arch-wiki-docs-zh-cnCNRepo 或者 arch-wiki-docs-zh-twCNRepo 离线文档包备用,也可尝试使用经由Cloudflare CDN的替代版本aw.lilydjwg.me

Fcitx

来自 Arch Linux 中文维基

Fcitx,即小企鹅输入法,是一个以 GPL 许可发布的输入法平台,可以通过安装引擎支持多种输入法,支持简入繁出,是在 Linux 操作系统中常用的中文输入法。它的优点是:短小精悍、与各种程序的兼容性比较好。

警告:本页面是关于上游仓库已归档、不支持 Wayland 的 Fcitx 3.x-4.x 版本。推荐使用正被积极维护的、支持 Wayland 的 Fcitx5。在社区提问时,也请提前声明您使用的版本。

安装软件包 fcitxAUR

输入法引擎

[编辑 | 编辑源代码]

Fcitx 内置的输入法支持中文拼音和基于字符表的输入(例如五笔)。根据语言的不同,可以选择其他输入法引擎。

在 Fcitx 支持的拼音输入法中,内置拼音响应速度最快。Fcitx 同样支持流行的第三方拼音输入法以提供更好的整句输入效果。

  • fcitx-mozcAUR, 为 Fcitx 添加 mozc (日语) 输入引擎支持,mozc 是 Google 日语输入法的开源版本。
  • fcitx-kkcAUR, 一款新的基于 libkkc 的日文假名与汉字输入引擎。
  • fcitx-skkAUR, 一款基于 libskk 的日文假名与汉字输入引擎。
  • fcitx-anthyAUR, 为 Fcitx 添加 anthy (日语) 输入引擎支持。

其它语言

[编辑 | 编辑源代码]
  • fcitx-hangulAUR, 为 Fcitx 添加 hangul (韩语) 输入引擎支持。
  • fcitx-m17nAUR, 为 Fcitx 添加 m17n (多国语言码表) 输入引擎支持。
  • fcitx-unikeyAUR, 为 Fcitx 添加 unikey (越南语) 输入引擎支持。
  • fcitx-sayuraAUR, 为 Fcitx 添加 sayura (僧伽罗语) 输入引擎支持。

输入法模块

[编辑 | 编辑源代码]

Fcitx 提供对 Qt 提供了输入法模块,请根据需要安装 fcitx-qt4AURfcitx-qt5AURfcitx-qt6AUR。如果没有安装对应的模块,一般还是可以在大部分程序中使用输入法的。不过很可能出现从无法光标跟随、无法显示预编辑字符串、无法输入甚至程序卡死等情况。

某些程序不使用 Qt 的输入法模块,这些程序包括:

  • 使用 Tk, motif, 甚至 xlib 的程序
  • Emacs、Opera、OpenOffice、LibreOffice、Skype、Wine、Java、Xterm、urxvt、WPS

您还可以在 Arch User Repository 找到更多以上软件包的 Git 版以及其它。

桌面环境下自动启动

[编辑 | 编辑源代码]

如果您用 XDG 兼容的桌面环境,比如 KDE, GNOME, Xfce, LXDE, 那么当您安装好 Fcitx 并重新登录后,Fcitx 应该会自动启动。如果没有的话,可以打开控制台并运行fcitx。为检验 Fcitx 是否正常运行, 打开一个程序,按 Ctrl+Space (这是切换输入法的默认快捷键)激活 Fcitx 并试着输入几个字。

如果 Fcitx 没有随桌面环境自动启动,或者您想修改下 Fcitx 启动参数,请用桌面环境提供的自动启动工具autostart配置,或者直接编辑用户目录~/.config/autostart/ 下的 fcitx-autostart.desktop 文件以确认自动启动是否被禁用。如果用户目录下的文件并不存在,您可以复制自动启动文件 /etc/xdg/autostart/fcitx-autostart.desktop 到用户目录。

如果您使用的桌面环境并不自动支持 XDG 自动启动, 请在您使用的启动脚本里面添加 fcitx 以实现自动启动。

例如,你使用i3sway窗口管理器,可以在配置文件中添加exec --no-startup-id fcitx -d来自动启动输入法。对于 fcitx5 用户则应添加如下 exec --no-startup-id fcitx5 -d

当 iBus 等其它输入法程序同时启动且开启了 Xim 支持时, 可能导致 Fcitx 无法启动,请确保已禁用了其它输入法程序的自动启动。

同时,请设置以下环境变量,使 GTK/Qt 应用程序优先使用输入法模块(IM module)。

模板错误: 您在尝试使用 = 标志吗? 有关解决方法,请访问 Help:Template#Escape template-breaking characters

如果没有设置这些环境变量,应用程序可能会回退到 XIM 协议。Qt5 应用程序例外,因为 Qt5 不支持 XIM 协议,必须使用输入法模块。

设置输入法的环境变量

[编辑 | 编辑源代码]

请按以下方式设置环境变量,如果没有这些环境变量,程序可能默认使用 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-env 已不再读取 ~/.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"。

要在 Gtk/Qt 程序中用 xim, 请将上面的变量改成如下的值:

GTK_IM_MODULE=xim
QT_IM_MODULE=xim

如果您在 ~/.xprofile~/.xinitrc 中修改这些变量,请添加 export

警告:使用 XIM 时,很可能会遇到一些 Fcitx 无法解决的问题,例如无法输入、无法跟随光标显示候选框、重启输入法时应用程序卡死等。官方也不支持解决这些问题。这些问题同样存在于其它输入法框架中,因此请尽可能使用 GTK 和 Qt 输入法模块,而不是 XIM。

重新登录后让环境变量生效。

注意:
  • Gtk2 从 2.24.20 开始,使用 /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 模块

GUI 配置工具

[编辑 | 编辑源代码]

Fcitx 提供了若干图形界面的配置程序:KDE 中的 kcm-fcitxAUR, 基于 GTK+3 的 fcitx-configtoolAUR

在终端运行 fcitx-config-gtk3 打开已安装的配置工具 fcitx-configtoolAUR。 如果您希望启用其它语言的输入法,请取消勾选 仅显示当前语言

如果要手工编辑 fcitx 的配置文件,请确保系统中并没有在运行 fcitx,否则编辑的配置内容可能丢失。

为了启用拼写检查功能,请先切换到由 fcitx-keyboard 提供的输入法,然后按下 Ctrl+Alt+h

输入法配置

[编辑 | 编辑源代码]

您可以在配置界面中添加或移除已启用的输入法。右键点击输入法图标即可打开对应配置。请注意,搜索功能区分大小写。

第一个设置的输入法处于未激活状态,其余所有输入法均处于激活状态。

通常情况下,建议将未激活状态设置为某个 Keyboard 选项(例如 Keyboard - English (US))。这些选项仅根据名称中指定的键盘布局进行输入。

全局配置中,触发输入法快捷键仅在未激活输入法及最后一个活动输入法之间切换。切换输入法快捷键默认仅在不同的活动输入法间切换,但是在高级设置中可以将非激活输入法加入切换选择。切换输入法快捷键需要按顺序按下,例如 ALT_SHIFT 仅在先按 alt 再按 shift 后生效。 可以通过将键盘设置为所需的 IME,然后右键点击托盘图标来访问对应 IME 的配置选项。

更改默认界面

[编辑 | 编辑源代码]

Fcitx 支持 kimpanel 协议,以提供更好的桌面集成体验。

  • Gnome-Shell:您可以从 extensions.gnome.org 安装 kimpanel,或者安装 gnome-shell-extension-kimpanel-gitAUR,它能够提供类似于 ibus-gjs 的用户体验。

扩充内置拼音词库

[编辑 | 编辑源代码]

用户配置拼音词库在 ~/.config/fcitx/pinyin, 其中 pybase.mb 为拼音单字库,pyphrase.mb 为拼音词库。如果这两文件并不存在,直接将您下载的词库放置到 /usr/share/fcitx/pinyin. 重启 Fcitx 即可。

下载皮肤并解压缩到下面任一目录,如果没有可以新建目录:

  • /usr/share/fcitx/skin 全局设置
  • ~/.config/fcitx/skin 特定用户设置

云拼音

[编辑 | 编辑源代码]

安装 fcitx-cloudpinyinAUR 后重启 fcitx 即可。在配置程序里却没有看见云拼音,记得勾上“高级”复选框。所选的云拼音输入结果会自动添加到当前输入法的词库中。

建议在fcitx设置里面将“云拼音来源”由Google改为“百度”,Google国内访问不是很顺畅。

启用云拼音后,从云拼音获得的候选词会默认添加到候选词列表中的第二个,显示位置可以通过云拼音的设置配置。如果云拼音的结果和本地输入法给出的结果一致,云拼音后选项会和本地产生的候选项自动合并,不会产生重复的候选项。

注意:不推荐将云拼音候选词设为第一个候选词,因为当网络情况不好,没有及时返回云拼音结果,那么云拼音结果将默认降到第二候选词的位置,于是这个过程可能会涉及到默认候选词的改变。

提示与技巧

[编辑 | 编辑源代码]

快捷键

[编辑 | 编辑源代码]

部分常用默认快捷键:

  • Ctrl+Space 激活输入法
  • 左 Shift 临时切换到英文
  • Ctrl+Shift 输入法间切换
  • -/= 向前/向后翻页
  • Shift+Space 全角、半角切换
注意:您可以在配置界面的全局配置中修改这些快捷键。

如果您经常在 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 ######
注意:由于要调用外部程序,这将明显拖慢会反复进出插入模式的映射。建议改写相关映射,用带 Python 支持的 Vim 加以配合 fcitx.vim 亦可改善效率。

剪贴板

[编辑 | 编辑源代码]

小小功能拯救世界!

Fcitx 自带剪贴板,其快捷键为 Ctrl + ;,这是一个非常实用的小功能。您可以在剪贴板插件配置页面中修改触发快捷键以及其它选项。

注意:这并不是一个剪贴板管理器。它不会像剪贴板管理器那样保存选择内容或修改剪贴板内容。它只能用于从剪贴板输入内容。
警告:某些客户端不支持多行输入,因此使用 fcitx-clipboard 粘贴多行剪贴板内容时,可能会发现多行内容被粘贴为单行。这可能是正在使用的程序的缺陷或特性,并非 Fcitx 能够解决的问题。

特殊符号

[编辑 | 编辑源代码]

创建 ~/.config/fcitx/data/pySym.mb, 文件内容示范如下:

 #第一个字符为“#”的行是注释
 #格式:编码 符号
 #编码只能为小写字母,经拼音解析后最长为10(如py为2,pinyin也为2)
 #数学符号
 sxfh +
 sxfh -
 sxfh <
 sxfh =
 sxfh >
 sxfh ±
 sxfh ×
 sxfh ÷
 sxfh ∈
 sxfh ∏
 sxfh ∑
 sxfh ∕
 sxfh √
 sxfh ∝

直接输入某编码,可以匹配出对应的特殊符号。

注意:编码只能用二十六个小写字母表示;以 v 开头,无效。

快速输入

[编辑 | 编辑源代码]

确保在 ~/.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 状态的命令行工具,位于 fcitxAUR 安装包中。

常见的应用包括用 fcitx-remote -s imname, 将输入法切换到 imname。要获得正确的 imname,执行 fcitx-diagnose 并查看 "## Input Methods:" 对应的输出。

通过 Fcitx 输入特殊字符

[编辑 | 编辑源代码]

参见:Fcitx5#通过 Fcitx5 输入特殊字符。该内容同样适用于 Fcitx

故障排除

[编辑 | 编辑源代码]

停用或修改 Extra key for trigger input method [sic]

[编辑 | 编辑源代码]

此设置位于 Global Config 选项卡中,默认值为 SHIFT Both,表示按下任意一个 Shift 键都会立即切换输入法。

虽然该设置本应只在单独按下某个 Shift 键时生效,但在使用标准键盘输入时,它可能会随机干扰大写字母输入、使用键盘选择文本等操作。

此外,该设置可能会在不提示的情况下随时恢复为默认值。若要确保 Fcitx 配置不会被修改,必须将该文件设置为不可变:

chattr +i ~/.config/fcitx/config

(需要以 root 用户执行。)

首先诊断问题所在

[编辑 | 编辑源代码]

当你遇到任何 fcitx 有关的问题,比如 Ctrl + Space 在有的程序中不能工作,首先应该用 fcitx-diagnose 命令诊断问题的原因。 fcitx-diagnose 会列出所有 fcitx 正常运行所需的前提条件,从输出结果中通常可以找到问题的原因。 在网上(比如在 irc 或者论坛里)询问别人关于 fcitx 配置的问题时,也请首先提供你的 fcitx-diagnose 输出结果(比如贴到 pastebin 服务),这将加速别人帮你找到问题所在。

如果您的 LC_CTYPE 设置为英文,可能会由于 Emacs 的一个旧 bug 而无法在 Emacs 中使用输入法。您可以在启动 Emacs 前将 LC_CTYPE 设置为其它值,例如 zh_CN.UTF-8,以避免此问题。

请注意,系统中必须已经生成对应的 locale

默认字体集合会在 src/xfns.c 中使用 `-*-*-*-r-normal--14-*-*-*-*-*-*-*' 作为基础字体。如果系统中没有匹配的字体(例如 terminus 或 75dpi 字体,可以通过 `xlsfonts` 查看输出),则无法启用 XIM。根据 FAQ字体 页面,可能需要安装 xorg-fonts-misc-otbAUR,因为 xorg-fonts-misc 已不再提供所需的字体集合。

Emacs Daemon

[编辑 | 编辑源代码]

如果您使用 Emacs daemon/client 模式,则应在启动 daemon 时设置 LC_CTYPE。例如:

LC_CTYPE=zh_CN.UTF-8 emacs --daemon

如果通过 systemd 启动 Emacs daemon,请在 unit 文件中设置

Environment="LC_CTYPE=zh_CN.UTF-8" "XMODIFIERS=@im=fcitx"

(这里可能需要显式设置 XMODIFIERS,因为 systemd 不会加载 .xprofile。可以检查 Emacs 中的 initial-environment 变量,以确认这两个变量是否正确设置。)

在 gnome-terminal 中 Ctrl + Space 无法调出输入法

[编辑 | 编辑源代码]

这个问题有时会发生,尤其是在 locale 设置为英文时。请确保您的 GTK_IM_MODULE 已正确设置。

另请参阅:FAQ

如果您已经将 *_IM_MODULE 环境变量设置为 fcitx,但仍然无法激活 Fcitx,请检查是否安装了对应的输入法模块。

某些程序只能使用 xim。如果您正在使用这些程序,请确保 XMODIFIERS 已正确设置,并注意可能遇到的问题。这些程序包括所有不使用 GTK 或 Qt 的程序(例如直接使用 tk、motif 或 xlib 的程序),以及 Emacs、Opera、OpenOffice、LibreOffice。

如果您在 Gnome 环境下无法在 gnome-terminal 中启用 Fcitx,并且上述方法无效,可以尝试:

$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"

Ctrl + ; 调出 Fcitx 剪贴板

[编辑 | 编辑源代码]

严格来说,这并不是一个 BUG。Fcitx 的 Ctrl + ; 快捷键会覆盖许多用户自定义的快捷键,尤其是 Emacs 用户的快捷键。如果有需要,可以在配置界面中禁用剪贴板插件,或者修改其激活快捷键。

fcitx-sogoupinyin 卡死、无法联想

[编辑 | 编辑源代码]

如果您遇到以下问题:

  • 输入类似“安装”、“暗影”等以 "a" 开头的词语时,Fcitx 出现卡死。
  • 输入并非以拼音 "a" 开头的词语时,却出现“阿拉伯”、“阿里巴巴”等以 "a" 开头的错误联想词。

可以通过删除 ~/.config/fcitx/sogou 目录下的所有内容来解决。

注意:此操作会清空用户词库。

在某些程序中输入法总是切换到美语键盘

[编辑 | 编辑源代码]

例如,在 XMind 中,当按下 Enter 创建新节点时,输入法会自动切换到美语键盘,需要再次按 Ctrl + Space 才能切回中文输入法。

启动 Fcitx 配置工具,在 Global Config 选项卡中的 Share State Among Window 选项里选择 PerProgramAll 即可解决。

Buildin Chinese Pinyin Default NOT ACTIVE

[编辑 | 编辑源代码]

如果您的 locale 为 en_US.UTF-8,Fcitx 默认不会启用内置中文拼音输入法,而只会启用 fcitx-keyboard-us 输入法。

您可以通过 fcitx-diagnose 命令看到类似如下提示:

   ## Input Methods:
       1.  Found 1 enabled input methods:
               fcitx-keyboard-us
       2.  Default input methods:
           **You only have one input method enabled, please add a keyboard input method as the first one and your main input method as the second one.**

此时,您应该通过图形配置工具将 PinyinShuangpin 输入法添加到已启用的输入法列表中。

fcitx 和 KDE

[编辑 | 编辑源代码]

由于一些原因,KDE 对键盘布局的处理并不完善。例如,当您从 US(英语)切换到 LT(立陶宛语)时,键盘上的数字键本应输出立陶宛语字母,但实际仍然输出数字。

可以通过以下步骤解决:

  1. 如果 Fcitx 正在后台运行,请先关闭它。
  2. 禁用 KDE 相关设置:
    1. System Settings > Input Devices > Layouts(选项卡) 中,确保取消勾选 Configure layouts
    2. System Settings > Input Devices > Advanced(选项卡) 中,确保取消勾选 Configure keyboard options
  3. 启动 Fcitx。此时可以关闭终端,Fcitx 仍会继续在后台运行。
  4. 设置所需的键盘布局(右键点击系统托盘图标,然后选择 Configure)。
  5. 右键点击系统托盘图标,然后选择 Exit

完成后,键盘布局应该可以正常工作,KDE 原生的布局切换图标也会出现,并且可以通过鼠标滚轮或点击进行切换。

输入法意外切换到英文

[编辑 | 编辑源代码]

例如,在 XMind 中,当用户按下 Enter 创建节点时,输入法总是会切换到英文,需要手动切回中文输入法。

要解决此问题,请打开 Fcitx 图形配置工具(由 fcitx-configtoolAUR 提供),切换到 Global Config 选项卡,在 Share State Among Window 下拉菜单中选择 PerProgramAll

xmodmap 设置被覆盖

[编辑 | 编辑源代码]

Fcitx 会控制键盘布局,因此您的 xmodmap 设置可能会被覆盖。

从 4.2.7 版本开始,Fcitx 会尝试加载存在的 ~/.Xmodmap 文件。

有关如何保存 xmodmap 修改的更多信息,请参阅 FAQ

Fcitx 和 setxkbmap

[编辑 | 编辑源代码]

如果您使用 setxkbmap 设置其它语言的键盘布局,那么根据上述情况,Fcitx 可能会覆盖这些设置,甚至导致某些应用程序(例如 QuteBrowser)无法切换到对应语言。

如果您希望避免这种情况,并独立管理自己的 xmodmap 键盘布局,请按照以下步骤操作:

  1. 打开 Fcitx 图形配置工具(由 fcitx-configtoolAUR 提供)。
  2. 切换到 Addon 选项卡。
  3. 选择 Advanced
  4. 搜索 xkb
  5. 选择 X Keyboards Integration
  6. 点击 Configure
  7. 取消勾选 Allow to Override System XKB Settings
  8. 点击 OK

HiDPI 下 Fcitx 预编辑框过小

[编辑 | 编辑源代码]

参见 HiDPI#Fcitx