# 安装Fcitx+Rime
Linux中的中文输入法与Windows上的输入法有所不同,不像Windows中一个输入法软件即可提供输入服务,在Linux中首先需要安装基础输入法软件Fcitx或者iBus,再通过Addon的方式添加各家的输入法解决方案如Google Pinyin、Sogou Pinyin等,本篇推荐的方案就是Fcitx加Rime的组合。其中,Rime的官方名称是中州韻輸入法引擎,官方网站是Rime.im,其默认用作输入繁体,因此需要一定的配置才能输入简体字。

Manjaro的软件安装策略使得安装应用程序非常便利,直接安裝以下软件包: sudo pacman -S fcitx-im #安裝全部fcitx組件
sudo pacman -S fcitx-rime #安裝rime
sudo pacman -S fcitx-configtool #安裝fcitx圖形管理工具
# 选择Rime
打开fcitx-configtool后,在Input Method选项卡中点击加号弹出搜索对话框,搜索Rime,点击OK添加。默认的输入法切换按键是Ctrl+Space
,切换到Rime后再按Shift可以切换中英文。
一个值得注意的地方是Rime会接管部分的Fcitx设置,比如候选项数量。
然後修改~/.xprofile
文件,將如下內容添加進文件中。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
# 具体的Rime配置
自定义Rime是一桩技术活,本篇只介绍我所使用的配置,你的个性配置可以参考GitHub。
当用户需要对Rime中的各种设定做小幅的调节,最直接、但不完全正确的做法是:编辑build文件夹(~/.config/fcitx/rime/build
)中那些.yaml 文档。但由于更新后总会覆盖build文件夹中的文件,这么做的弊端不言而喻,因此推荐在用户文件夹(~/.config/fcitx/rime
)创建custom文件,来进行自定义。创建的文件应当符合以下文件名格式:主体部份(「.」之前)与要定制的文件相同、次级扩展名(「.yaml」之前)为.custom。例如源文件为luna_pinyin.schema.yaml
,你的自定义文件就为luna_pinyin.custom.yaml
。
我的配置文件luna_pinyin.custom.yaml
如下,其主要任务便是提供简体字输出。
# luna_pinyin.custom.yaml
#
# 【朙月拼音】模糊音定製模板
# 佛振配製 :-)
#
# 位置:
# ~/.config/fcitx/rime (Linux)
# ~/Library/Rime (Mac OS)
# %APPDATA%\Rime (Windows)
#
# 於重新部署後生效
#
patch:
switches: # 注意缩进
- name: ascii_mode
reset: 0 # reset 0 的作用是当从其他输入法切换到本输入法重设为指定状态
states: [ 中文, 西文 ] # 选择输入方案后通常需要立即输入中文,故重设 ascii_mode = 0
- name: full_shape
states: [ 半角, 全角 ] # 而全/半角则可沿用之前方案的用法。
- name: simplification
reset: 1 # 增加这一行:默认启用「繁→簡」转换。
states: [ 漢字, 汉字 ]
'speller/algebra':
- erase/^xx$/ # 第一行保留
# 模糊音定義
# 需要哪組就刪去行首的 # 號,單雙向任選
#- derive/^([zcs])h/$1/ # zh, ch, sh => z, c, s
#- derive/^([zcs])([^h])/$1h$2/ # z, c, s => zh, ch, sh
#- derive/^n/l/ # n => l
#- derive/^l/n/ # l => n
# 這兩組一般是單向的
#- derive/^r/l/ # r => l
#- derive/^ren/yin/ # ren => yin, reng => ying
#- derive/^r/y/ # r => y
# 下面 hu <=> f 這組寫法複雜一些,分情況討論
#- derive/^hu$/fu/ # hu => fu
#- derive/^hong$/feng/ # hong => feng
#- derive/^hu([in])$/fe$1/ # hui => fei, hun => fen
#- derive/^hu([ao])/f$1/ # hua => fa, ...
#- derive/^fu$/hu/ # fu => hu
#- derive/^feng$/hong/ # feng => hong
#- derive/^fe([in])$/hu$1/ # fei => hui, fen => hun
#- derive/^f([ao])/hu$1/ # fa => hua, ...
# 韻母部份
#- derive/^([bpmf])eng$/$1ong/ # meng = mong, ...
- derive/([ei])n$/$1ng/ # en => eng, in => ing
- derive/([ei])ng$/$1n/ # eng => en, ing => in
# 樣例足夠了,其他請自己總結……
# 反模糊音?
# 誰說方言沒有普通話精確、有模糊音,就能有反模糊音。
# 示例爲分尖團的中原官話:
#- derive/^ji$/zii/ # 在設計者安排下鳩佔鵲巢,尖音i只好雙寫了
#- derive/^qi$/cii/
#- derive/^xi$/sii/
#- derive/^ji/zi/
#- derive/^qi/ci/
#- derive/^xi/si/
#- derive/^ju/zv/
#- derive/^qu/cv/
#- derive/^xu/sv/
# 韻母部份,只能從大面上覆蓋
#- derive/^([bpm])o$/$1eh/ # bo => beh, ...
#- derive/(^|[dtnlgkhzcs]h?)e$/$1eh/ # ge => geh, se => sheh, ...
#- derive/^([gkh])uo$/$1ue/ # guo => gue, ...
#- derive/^([gkh])e$/$1uo/ # he => huo, ...
#- derive/([uv])e$/$1o/ # jue => juo, lve => lvo, ...
#- derive/^fei$/fi/ # fei => fi
#- derive/^wei$/vi/ # wei => vi
#- derive/^([nl])ei$/$1ui/ # nei => nui, lei => lui
#- derive/^([nlzcs])un$/$1vn/ # lun => lvn, zun => zvn, ...
#- derive/^([nlzcs])ong$/$1iong/ # long => liong, song => siong, ...
# 這個辦法雖從拼寫上做出了區分,然而受詞典制約,候選字仍是混的。
# 只有真正的方音輸入方案纔能做到!但「反模糊音」這個玩法快速而有效!
# 模糊音定義先於簡拼定義,方可令簡拼支持以上模糊音
- abbrev/^([a-z]).+$/$1/ # 簡拼(首字母)
- abbrev/^([zcs]h).+$/$1/ # 簡拼(zh, ch, sh)
# 以下是一組容錯拼寫,《漢語拼音》方案以前者爲正
- derive/^([nl])ve$/$1ue/ # nve = nue, lve = lue
- derive/^([jqxy])u/$1v/ # ju = jv,
- derive/un$/uen/ # gun = guen,
- derive/ui$/uei/ # gui = guei,
- derive/iu$/iou/ # jiu = jiou,
# 自動糾正一些常見的按鍵錯誤
- derive/([aeiou])ng$/$1gn/ # dagn => dang
- derive/([dtngkhrzcs])o(u|ng)$/$1o/ # zho => zhong|zhou
- derive/ong$/on/ # zhonguo => zhong guo
- derive/ao$/oa/ # hoa => hao
- derive/([iu])a(o|ng?)$/a$1$2/ # tain => tian
# 分尖團後 v => ü 的改寫條件也要相應地擴充:
#'translator/preedit_format':
# - "xform/([nljqxyzcs])v/$1ü/"
# 候选词数量设定为9
"menu/page_size": 9
# Fcitx的皮肤
自Fcitx 4.0以来,已经可以安装第三方皮肤,例如GitHub上就有一些不错的Material Style皮肤,可以依照自身喜好选择。