我用过的 MacOS 下的各种五笔输入法有:
- 系统自带五笔
- QQ五笔
- 搜狗五笔
- 鼠须管(开源)
- 清歌五笔(免费,已捐款)
- 落格输入法(付费)
这几年用了一圈下来,我还是回到了鼠须管输入法。为什么呢?我先说说其他输入法让我不满意的地方。系统自带五笔我最不能接受的是不支持 emacs 风格光标移动——ctrl+b:后退,ctrl+f:前进,还有ctrl+p、n、e、a等等,然而,在英文、拼音输入状态下都支持。QQ五笔、搜狗五笔定制性太差,不顺手的设定也调节不了。清歌五笔的定制性也不高,但是默认就比较顺手,缺点是词库不能替换,虽然原版的就已经很不错。落格输入法支持多种输入法,五笔只是其中之一,可以替换词库,但是定制性的功能不够强大,比如想用拼音反查五笔编码就做不到。
一圈下来我也了解了自己的需求:
- 可以自定义词库
- 不影响 emacs 风格光标移动
- 临时拼音输入,且带五笔编码反查
- 自定义输入习惯,如四码唯一上屏,五码顶字上屏,分号、单引号选二三候选字,空码按空格清空等等
想要最灵活的定制,最强大的功能,选择必然是鼠须管了。然而鼠须管的缺点也相当明显,配置难度非常高,尤其是在一两年前,还得自己编译出最新版。幸好最近作者又再发力,易用性有了一定的提高。不过就目前的情况看来,要用鼠须管,最好你是一名程序员,或者至少是名专业用户。
安装
用 brew 安装非常简单。
brew cask install squirrel
鼠须管默认没有五笔,官方提供了一个工具——东风破,用于安装输入方案:
git clone https://github.com/rime/plum.git
cd plum
bash rime-install wubi pinyin-simp
五笔依赖 pinyin-simp 做拼音反查,所以这里一并安装了。
接下来我们还需要把五笔配置到输入法选单里,新建或修改以下文件。
# ~/Library/Rime/default.custom.yaml
patch:
schema_list:
- schema: wubi86
在输入菜单里点部署,到现在鼠须管被配置成五笔输入法了。
然而,当你打了一段时间之后,你会发现这个五笔有点问题。这个 pr 里描述得很清楚,摘录一小段:
- utem 第一位是
顔
,第二位才是颜
- tvfh 第一位是
筆
,第二位才是律
可惜作者没有接纳这个 pr。但是鼠须管本来就具有超高的定制性,别说改五笔码表了,创造自己的输入法都行。那么我们现在要做的是修改五笔的码表(可以称为词库),方法很简单,看看~/Library/Rime/wubi86.dict.yaml
的内容,格式很简单,换成自己喜欢的词库就行。
如果你没有特别喜欢的词库或者不想制作词库,那么也可以用上面 pr 提供的库词,会是个不错的选择。
定制
~/Library/Rime/wubi86.custom.yaml
文件可以针对五笔输入方案定制,分享我的定制:
# ~/Library/Rime/wubi86.custom.yaml
patch:
translator/enable_user_dict: false # 关闭词频调整
translator/enable_sentence: false # 关闭句子输入
translator/enable_completion: false # 关闭逐键提示
speller/max_code_length: 4 # 最长4码
speller/auto_select: true # 顶字上屏
speller/auto_select_unique_candidate: true # 无重码自动上屏
speller/auto_clear: max_length # 空码且達到最長碼時確認清屏 https://github.com/rime/librime/issues/60#issuecomment-153245010
key_binder/bindings:
# 分号、单引号上屏幕二三候选词
- {when: has_menu, accept: semicolon, send: 2}
- {when: has_menu, accept: apostrophe, send: 3}
# 空碼時按空格鍵清空輸入碼
- {when: has_menu, accept: space, send: space}
- {when: composing, accept: space, send: Escape}
鼠须管默认配置在中文输入时,有些标点符号会出现选单,比如输入[,会出现「, 【, 〔, [
供选择,我感觉很影响效率,标点符号的输入我都希望能直接出结果。配置方法也很简单,默认的标点符号配置在/Library/Input Methods/Squirrel.app/Contents/SharedSupport/punctuation.yaml
文件里,复制一份,修改好,放到~/Library/Rime/default.custom.yaml
的 patch 里即可。
理解鼠须管的配置原理
前面我们创建和配置了几个配置文件,那么为什么是这些文件,这些文件是怎样工作的?
首先鼠须管软件带的默认配置文件都在/Library/Input Methods/Squirrel.app/Contents/SharedSupport/
里,这里的文件是不能改的,需要修改这里面的配置,就需要在~/Library/Rime/
里建立相应的文件来打补丁。一般需要修改的配置文件有default.yaml
和squirrel.yaml
,对应的文件是default.custom.yaml
和squirrel.custom.yaml
。而针对输入方案的配置文件则是方案名.custom.yaml
,比如五笔就是wubi86.custom.yaml
了。
接下来需要考虑的是定制文件里怎样打补丁了,用一个例子做说明,~/Library/Rime/wubi86.schema.yaml
里有如下片段。
translator:
dictionary: wubi86
enable_charset_filter: true
enable_sentence: true
enable_encoder: true
...
我们想把enable_sentence
改成false
,那么补丁可以这样写:
# ~/Library/Rime/wubi86.custom.yaml
patch:
translator/enable_sentence: false # 关闭句子输入
领悟一下,详细还是看文档吧。
怎样调试?要看看我们的补丁打得对不对,可以在部署之后看~/Library/Rime/build/
目录里对应的文件,这些是打完补丁后最终生成的文件。