# Fcitx (简体中文)

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

## 安装 FCITX

fcitx 在 [community] 库中，可以通过 Pacman 来安装：

为了在 gtk 与 qt 程序中获得良好的输入体验（例如光标跟随与显示预编辑字符串）并避免一些 xim 无法解决的 bug, 请根据需要安装对应的输入法模块: fcitx-gtk2, fcitx-gtk3, fcitx-qt4 以及 fcitx-qt5. 若要一次性安装 Fcitx 主程序和相关的模块，可使用此命令:

     pacman -S fcitx-im

## 使用 FCITX 输入中文

使用 FCITX 之前,你必须先进行一些环境设定:

- 如果你采用 KDM、GDM、LightDM 等显示管理器，请在~/.xprofile (没有则新建一个)中加入如下3行，如果你采用 startx 或者 Slim 启动 （即使用.xinitrc的场合），则在 ~/.xinitrc 中加入：

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

Warning: 请不要使用 .bashrc 来设置这些环境变量. .bashrc 应用于交互性 bash 会话的初始化, 既不应用于非交互性脚本也不应用于 X 会话的初始化. 同时, 在 .bashrc 里面设置这些变量将会影响从命令行启动的差错程序使之错误的认为环境变量在 X 会话中已被正确设置.

以上设置使用了fcitx提供的gtk/qt输入法模块, 请根据需要安装 fcitx-gtk2, fcitx-gtk3 , fcitx-qt4和fcitx-qt5.

你可以选择在gtk/qt程序中使用xim, 为此你可以将上面的环境变量的对应设置改成如下的值

     export GTK_IM_MODULE=xim
     export QT_IM_MODULE=xim

Warning: 使用xim输入很可能会遇到一些包括不能输入, 没有光标跟随, 重启输入法时应用程序卡死在内的无法由fcitx解决的问题. 对于在使用xim时遇到的这些问题, fcitx无法提供任何支持.
Warning: 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 更新缓存.

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

如果你使用 XDG 兼容的桌面环境如 KDE, GNOME, XFCE, LXDE, 当你重新登录后，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 提供了图形界面的配置程序，你可以安装他们：kcm-fcitx(基于KDE 的 kcm), fcitx-configtool(基于 gtk3), 或者从 AUR 安装 fcitx-configtool-gtk2(基于 gtk2, 不支持)。

警告: Fcitx 不支持手动编辑配置文件，造成的风险请用户自行承担

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

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

#### Gnome-Shell

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

#### KDE

您可以安装 kdeplasma-addons-applets-kimpanel 使用 plasma 作为输入法界面, 候选框风格将与plasma主题保持一致.

#### 独立 kimpanel 界面

目前作为独立程序运行的 kimpanel 界面有 kimtoy 以及 gimpanel (作者没有进一步开发的打算且尚未打包). 其中 kimtoy 可以使用搜狗输入法的皮肤文件(目前linux环境下唯一能使用搜狗输入法皮肤的程序)和fcitx自身的皮肤文件.

## 配置 fcitx

### 配置输入法

您可以在配置界面中设置启用的输入法. 列表中的第一个输入法将作为"未激活"状态使用, 请遵从界面上的提示将列表中的此项设为键盘布局输入法 (键盘 - 英文). 列表中的第二项将作为您的默认输入法. 您同样可以在这里通过从列表中移除禁用不希望在切换列表中看到的输入法.

Warning: 请必须将将键盘布局输入法设为列表中第一项, 否则可能出现无法禁用中文输入的情况!

### 快捷键

部分常用默认快捷键

     Ctrl+Space 激活输入法
     左Shift    临时切换到英文
     Ctrl+Shift 输入法间切换
     -/=        向前/向后翻页

你可以在配置界面的全局配置中修改这些快捷键

### 拼音输入法

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

用户配置拼音词库是在~/.config/fcitx/pinyin下，其中pybase.mb是拼音单字库 pyphrase.mb拼音词库（如果这两文件没有，那么fcitx就读取此目录/usr/share/fcitx/pinyin）,将你下载的词库放置到此目录后，重启（ctrl+5）fcitx就可以了。

    mv pybase.mb pyphrase.mb ~/.config/fcitx/pinyin/

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

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

#### 使用云拼音

fcitx-cloudpinyin可以提供云拼音输入的支持, 支持fcitx下的全部拼音输入法, 安装后重启 fcitx 即会自动启用, 所选的云拼音输入结果会自动添加到当前输入法的词库中.

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

不推荐将云拼音候选词设为第一个候选词, 如果网络情况不好，没有及时返回云拼音结果，那么云拼音结果将默认降到第二候选词的位置。这个过程可能会涉及到默认候选词的改变，如果您使用的网络情况不够好，请酌情考虑云拼音结果默认候选顺序。

## Vim

如果你经常在vim下使用fcitx，可以安装fcitx.vim。或者简单地在`~/.vimrc`添加如下代码，可实现退出插入模式时，关闭fcitx；进入插入模式时，启用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 亦可改善这种情况。

## 故障排除

- 注意:

当LC_CTYPE为英文时, 会出现Emacs下无法使用输入法的情况, 如出现此情况, 请在启动Emacs时将LC_CTYPE设为zh_CN.UTF-8. (终端下使用emacs无此问题, 输入法会由终端程序处理).

Emacs默认fontset会使用"-*-*-*-r-normal--14-*-*-*-*-*-*-*"字体(terminus、75dpi等等，可以通过`xlsfonts'命令查看)，如果你没有匹配的字体，fcitx将不能呼出。

- 输入法模块

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

如果你已经将IM MODULE设定为fcitx且遇到了无法激活输入法的问题, 请根据出现问题的程序检查对应的输入法模块包是否已经安装

部分程序无法使用gtk/qt的输入法模块, 如果你需要使用这些程序, 请注意xim设置以及xim下可能遇到的以上问题. 这些程序包括: 所有不使用gtk/qt的程序(如使用tk, motif, 或者直接使用xlib的程序), emacs, opera, openoffice, libreoffice, skype

- 火狐右键和菜单无法弹出的问题

firefox升级到13后可能与xim发生冲突造成菜单无法弹出等问题，解决办法是确定安装了 fcitx-gtk2 并且把环境配置文件中的

     export GTK_IM_MODULE=xim

换成

     export GTK_IM_MODULE=fcitx

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

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

- Ctrl + ; 会调出fcitx的粘贴插件

严格的说, 这不是一个问题, Ctrl + ; 会覆盖很多用户自己的快捷键. (emacs用户居多). 并且, 由于这不是一个输入法的基本功能, 所以在升级fcitx 4.2.7后会不知道是何程序覆盖了自己的快捷键. 关闭这个插件的方法为修改文件: 在配置界面中禁用剪贴板插件或更改其激活快捷键

### 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
- 猫颜文字 For Fcitx QuickPhrase

Categories:

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