Fcitx - Arch Linux 中文维基

跳至內容

# Fcitx

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Fcitx，最近一次同步於 2020-04-28，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- IBus
- Fcitx5
- SCIM
- UIM

Fcitx，即小企鵝輸入法，是一個以 GPL 許可發布的輸入法平台,可以通過安裝引擎支持多種輸入法，支持簡入繁出，是在 Linux 作業系統中常用的中文輸入法。它的優點是：短小精悍、與各種程序的兼容性比較好。

警告：本頁面是關於上游倉庫已歸檔、不支持 Wayland 的 Fcitx 3.x-4.x 版本。推薦使用正被積極維護的、支持 Wayland 的 Fcitx5。在社區提問時，也請提前聲明您使用的版本。

## 安裝

安裝軟體包 fcitxAUR。

### 輸入法引擎

Fcitx 內置的輸入法支持中文拼音和基於字符表的輸入（例如五筆）。根據語言的不同，可以選擇其他輸入法引擎。

#### 中文

在 Fcitx 支持的拼音輸入法中，內置拼音響應速度最快。Fcitx 同樣支持流行的第三方拼音輸入法以提供更好的整句輸入效果。

- fcitx-sunpinyinAUR 在輸入速度和輸入精度之間有較好的平衡。
- fcitx-libpinyinAUR 算法比 sunpinyin 先進。
- fcitx-rimeAUR, 即著名中文輸入法 Rime IME的 Fcitx 版本。但它不支持 Fcitx 本身的 #特殊符號和 #快速輸入功能，自定義設置請參見官方，
- fcitx-googlepinyinAUR, Google 拼音輸入法 for Android。
- fcitx-sogoupinyinAUR, 搜狗輸入法for linux——支持全拼、簡拼、模糊音、雲輸入、皮膚、中英混輸入。官方網址
- fcitx-cloudpinyinAUR 可以提供雲拼音輸入的支持，支持 Fcitx 下的所有拼音輸入法，Fcitx-rime 除外。
- fcitx-chewingAUR 為 Fcitx 添加 chewing (繁體中文注音) 輸入引擎支持。依賴 libchewing包。
- fcitx-baidupinyinAUR, 百度拼音輸入法的fcitx wrapper。
- fcitx-table-extraAUR Fcitx 的一些額外碼表支持，包括倉頡 3, 倉頡 5, 粵拼, 速成, 五筆, 鄭碼等等。

#### 日文

- 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-qt4AUR、fcitx-qt5AUR 和 fcitx-qt6AUR。如果沒有安裝對應的模塊，一般還是可以在大部分程序中使用輸入法的。不過很可能出現從無法光標跟隨、無法顯示預編輯字符串、無法輸入甚至程序卡死等情況。

某些程序不使用 Qt 的輸入法模塊，這些程序包括：

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

### 其它

- fcitx-ui-lightAUR, Fcitx 的輕量 UI。
- fcitx-table-otherAUR, 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-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"。

### Xim

要在 Gtk/Qt 程序中用 xim, 請將上面的變量改成如下的值：

    GTK_IM_MODULE DEFAULT=xim
    QT_IM_MODULE  DEFAULT=xim

警告：使用 xim, 很可能會遇到一些包括不能輸入, 沒有光標跟隨, 重啟輸入法時應用程式卡死在內的無法由 Fcitx 解決的問題，且官方不支持解決。

重新登錄後讓環境變量生效。

注意：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 模塊

## 配置

### 配置工具

Fcitx 提供了若干圖形界面的配置程序：KDE 中的 kcm-fcitxAUR, 基於 GTK+3 的 fcitx-configtoolAUR。

安裝完配置工具fcitx-configtoolAUR之後打開配置工具的方法是用終端運行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 的輸入法狀態圖標。

### 輸入法

您可以在配置界面工具中添加／移除啟用的輸入法。在輸入法圖標上右鍵可以打開配置。

列表第一項將作為「未激活」狀態使用，請將此項設為鍵盤布局輸入法，比如「(鍵盤 - 英文)」，第一項後面的輸入法都是活動輸入法。。

警告：請必須將鍵盤布局輸入法設為列表中第一項, 否則可能會無法禁用中文輸入。

在全局配置中，觸發輸入法快捷鍵僅在未激活輸入法及最後一個活動輸入法之間切換。切換輸入法快捷鍵默認僅在不同的活動輸入法間切換，但是在高級設置中可以將非激活輸入法加入切換選擇。切換輸入法快捷鍵需要按順序按下，例如 `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 ######

注意：由於要調用外部程序，這將明顯拖慢會反覆進出插入模式的映射。建議改寫相關映射，用帶 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 ▄︻┻┳═一…… ☆<(=￣□￣=!)>
     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

設置位於全局配置標籤，默認是 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」即可解決。

## 參見

- Fcitx GitHub
- Fcitx Google Code
- Fcitx Wiki
- 貓顏文字 For Fcitx QuickPhrase
- emoji常用表情-fcitx-emoji
- 史前大坑 Fcitx 官方 Artwork 團隊出品：Fcitx 輸入法皮膚製作全教程
- rime 朙(ming)月拼音擴充詞庫
- Fcitx not work in terminal, nautilus, gedit

分類：​

- 輸入法

Fcitx
新增話題