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」即可解決。