# Fcitx (简体中文)

Related articles

- IBus
- SCIM
- UIM

Fcitx (Flexible Input Method Framework) ──即小企鹅输入法，它是一个以 GPL 方式发布的输入法平台(即原来的 G 五笔)，包括五笔、拼音(全拼和双拼)、二笔、区位等输入模块，支持简入繁出，是在 Linux 操作系统中常用的中文输入法。它的优点是，短小精悍、跟程序的兼容性比较好。

## 安装

安装位于 Official repositories (简体中文) 里的 fcitx.

### 输入法

#### 第三方拼音输入法

Fcitx 同样支持流行的第三方拼音输入法以提供更好的整句输入效果. 在 Fcitx 支持的拼音输入法中，内置拼音响应速度最快，fcitx-sunpinyin 的综合效果最好，fcitx-libpinyin 算法比 sunpinyin 先进，但是尚有很多 bug 而且欠缺良好的词库。其它的还有：

- fcitx-rime, 即著名中文输入法 Rime 的 Fcitx 版本。但它不支持 Fcitx 本身的 #特殊符号 和 #快速输入 功能，自定义设置请参见官方，
- fcitx-googlepinyin, Google 拼音输入法 for Android.
- fcitx-sogoupinyinAUR, 搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输入。官方网址

#### 云拼音

fcitx-cloudpinyin 可以提供云拼音输入的支持，支持 Fcitx 下的所有拼音输入法，Fcitx-rime 除外。安装后重启 Fcitx 即可，所选的云拼音输入结果会自动添加到当前输入法的词库中。提醒：建议在fcitx设置里面将“云拼音来源”由Google改为“百度”，Google国内访问不是很顺畅。

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

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

#### 异国语言输入引擎

- fcitx-anthy, 为 Fcitx 添加 anthy (日语) 输入引擎支持。
- fcitx-chewing, 为 Fcitx 添加 chewing (繁体中文注音) 输入引擎支持。
- fcitx-hangul, 为 Fcitx 添加 hangul (韩语) 输入引擎支持。
- fcitx-m17n, 为 Fcitx 添加 m17n (多国语言码表) 输入引擎支持。
- fcitx-mozc, 为 Fcitx 添加 mozc (日语) 输入引擎支持，mozc 是 Google 日语输入法的开源版本。
- fcitx-unikey, 为 Fcitx 添加 unikey (越南语) 输入引擎支持。
- fcitx-sayura, 为 Fcitx 添加 sayura （僧伽罗语） 输入引擎支持。

### 输入法模块

Fcitx 提供对 Gtk+/Qt 提供了输入法模块，请根据需要安装 fcitx-gtk2, fcitx-gtk3, fcitx-qt4 和 fcitx-qt5. 多软件包 fcitx-im 打包了全部.(现在已经包括 fcitx-qt5).

警告: 即使未安装输入法模块，一般还是可以在大部分程序中使用输入法，不过很可能出现从无法光标跟随、无法显示预编辑字符串、无法输入甚至程序卡死等情况。如无特殊情况请直接安装 fcitx-im.

某些程序不使用 Gtk+/Qt 的输入法模块，这些程序包括:

- 所有不使用 Gtk+/Qt的程序，如使用 Tk, motif, 甚至 xlib 的程序
- Emacs
- Opera
- OpenOffice
- LibreOffice
- Skype
- Wine
- Java
- Xterm
- urxvt
- WPS

### 其它

- fcitx-ui-light, Fcitx 的轻量 UI.
- fcitx-fbterm, Fbterm 对 Fcitx 的支持。
- fcitx-table-extra Fcitx 的一些额外码表支持，包括仓颉 3, 仓颉 5, 粤拼, 速成, 五笔, 郑码等等
- fcitx-table-other, Fcitx 的一些更奇怪的码表支持，包括 Latex, Emoji, 以及一大堆不明字符等等。
- kcm-fcitx, KDE 的 Fcitx 输入法模块。

您还可以在 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

以实现自动启动。

注意: 当 iBus 等其它输入法程序同时启动且开启了 Xim 支持时, 可能会害 Fcitx 启动不了，请确保已禁用了其它输入法程序的自动启动。

### 非桌面环境

使用 Fcitx 之前，您必须先设置一些环境设定变量：

如果您用 KDM, GDM, LightDM 等显示管理器，请在 `~/.xprofile` 中加入以下代码；如果您用 `startx` 或者 Slim 启动，即使用 `.xinitrc` 的场合，则改在 `~/.xinitrc` 中加入：

     export GTK_IM_MODULE=fcitx
     export QT_IM_MODULE=fcitx
     export XMODIFIERS="@im=fcitx"

警告: 这一步非常重要请不要忽略，即便你原来默认没有.xprofile文件也要新建一个然后写入这几行，不然中文输入法是启动不了的。还有.xprofile文件名一定要全部小写，不要看到.Xauthority这种文件名以为首字母要大写就大写成.Xprofile了，不然也是没法用中文输入法的。
警告: 请不要在 `.bashrc` 设置这些环境变量。`bashrc`只应用于交互性 bash 会话的初始化，并不应用于非交互性脚本或 X 会话的初始化。否则，从命令行启动的某程序会误以为该环境变量在 X 会话中已正确设置，哪怕 X 会话并没有启动。

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

### Xim

您还可以在 Gtk+/Qt 程序中用 xim, 为此您要将 #非桌面环境 里的环境变量改成如下的值：

     export GTK_IM_MODULE=xim
     export QT_IM_MODULE=xim

警告: 使用 xim, 很可能会遇到一些包括不能输入, 没有光标跟随, 重启输入法时应用程序卡死在内的无法由 Fcitx 解决的问题，且官方不支持解决。

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

## 配置

### 配置工具

Fcitx 提供了若干图形界面的配置程序：基于 KDE 之 kcm 的 kcm-fcitx, 基于 GTK+3 的 fcitx-configtool, 或者来自 AUR, 基于 GTK+2, 但不被官方支持的 fcitx-configtool-gtk2AUR[broken link: archived in aur-mirror]。

安装完配置工具fcitx-configtool之后打开配置工具的方法是用终端运行fcitx-config-gtk3，打开这个配置工具之后还要添加中文输入法。

添加中文输入法的方法是在第一个标签，点下面的加号，然后它默认本身是勾选了之显示当前语言的输入法的（Only Show Current Language），因为一般按照默认的方法安装Archlinux的是英文语言，在这种状态下是找不到中文输入法的，一定要先取消勾选这个选项，然后才能在上面的列表中找到中文输入法（可能叫Pinyin, Libpinyin之类的）。然后添加这个才会有中文输入法。

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

### 替换自带的经典界面

Fcitx 支持使用 kimpanel 协议的界面，以提供更好的桌面整合体验.

#### Gnome-Shell

您可以在 AUR 安装 gnome-shell-extension-kimpanel-gitAUR, 它提供了类似 ibus-gjs 的用户体验，其候选框界面将会采用 Gnome-Shell 的主题风格, 同时在状态栏中增加 Fcitx 的输入法状态图标。

#### KDE

您可以安装 kdeplasma-addons-applets-kimpanel[broken link: package not found], 其用 plasma 作为输入法界面, 候选框风格将与 plasma 主题保持一致。

#### 独立 kimpanel 界面

目前有 kimtoy，它都可以使用搜狗输入法和 Fcitx 本身的皮肤。

### 输入法

您可以在配置界面工具中添加／移除启用的输入法。列表第一项将作为「未激活」状态使用，请遵从界面上的提示将列表中的此项设为键盘布局输入法，比如「(键盘 - 英文)」，列表第二项则是默认输入法，其它项则为可切换到的输入法。

警告: 请必须将键盘布局输入法设为列表中第一项, 否则可能会无法禁用中文输入。

#### 扩充内置拼音词库

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

### 皮肤

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

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

## 提示与技巧

### 快捷键

部分常用默认快捷键：

- 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 ######

注意: 由于要调用外部程序，这将明显拖慢会反复进出插入模式的映射。建议改写相关映射，用带 Python 支持的 Vim 加以配合 fcitx.vim 亦可改善效率。

### 剪贴板

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 ∝

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

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

### 快速输入

确保在 `~/.config/fcitx/config` 里把 `SemiColonAction` 修改为 `QuickPhrase`.

创建 `~/.config/fcitx/data/QuickPhrase.mb`, 文件内容示范如下：

     #第一个字符为“#”的行是注释
     #格式：编码 符号
     #数学符号

     dianhua 123456789
     youbian 123456
     dizhi 中华人民共和国北京市长安街一号
     aowu ┗<(=｀O′=)>┛
     mobai ｍ<(＿　＿)>ｍ
     baobao <(=′▽')爻 (`▽｀=)>
     baobao <(=*′д｀)爻(′д｀*=)>
     qiangbi ▄︻┻┳═一…… ☆<(=￣□￣=!)>

按 `;` 并输入编码，可实现快速输入，自然也能用来当 颜文字库。

注意: 编码除了不得有空格，不得以 `;` 开头之外，没有其它限制。

## 故障排除

### 首先诊断问题所在

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

### Emacs 无法使用输入法

当 `LC_CTYPE` 为英文时, 在 Emacs 上可能无法使用输入法。若遇到此情况，请在启动 Emacs 时将 `LC_CTYPE` 设为 `zh_CN.UTF-8`. 终端下并不会遇到此现象，因为输入法会交给终端程序处理。

Emacs 默认 fontset 会使用 "-*-*-*-r-normal--14-*-*-*-*-*-*-*" 字体 (terminus, 75dpi 等等，可以通过 `xlsfonts` 命令查看)，如果您并没有匹配的字体，无法呼出 Fcitx.

### Firefox 右键菜单不弹出

Firefox 升级到 13 后可能与 xim 发生冲突，害得菜单没法弹出，解决办法是确定安装了 fcitx-gtk2 并且把环境配置文件中的

     export GTK_IM_MODULE=xim

换成

     export GTK_IM_MODULE=fcitx

### 在 GTK2 程序中用 `Ctrl + Space` 不能调出输入法

当 `locale` 为英文时，在 GTK+2 程序中有可能无法正常使用 Fcitx，例如 Chromium (简体中文) 或 Firefox (简体中文) 等。请确认 fcitx-gtk2 已安装且已设置 `GTK_IM_MODULE`。

### 在 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」即可解决。

## 参见

- Fcitx GitHub
- Fcitx Google Code
- Fcitx Wiki
- Fcitx Themes
- 猫颜文字 For Fcitx QuickPhrase
- 史前大坑 Fcitx 官方 Artwork 团队出品：Fcitx 输入法皮肤制作全教程
- rime 朙(ming)月拼音擴充詞庫
- Fcitx not work in terminal, nautilus, gedit

Categories:

- 简体中文
- Internationalization (简体中文)

Hidden category:

- Pages with broken package links