我用过的 MacOS 下的各种五笔输入法有:

  • 系统自带五笔
  • QQ五笔
  • 搜狗五笔
  • 鼠须管(开源)
  • 清歌五笔(免费,已捐款)
  • 落格输入法(付费)

这几年用了一圈下来,我还是回到了鼠须管输入法。为什么呢?我先说说其他输入法让我不满意的地方。系统自带五笔我最不能接受的是不支持 emacs 风格光标移动——ctrl+b:后退,ctrl+f:前进,还有ctrl+p、n、e、a等等,然而,在英文、拼音输入状态下都支持。QQ五笔、搜狗五笔定制性太差,不顺手的设定也调节不了。清歌五笔的定制性也不高,但是默认就比较顺手,缺点是词库不能替换,虽然原版的就已经很不错。落格输入法支持多种输入法,五笔只是其中之一,可以替换词库,但是定制性的功能不够强大,比如想用拼音反查五笔编码就做不到。

一圈下来我也了解了自己的需求:

  • 可以自定义词库
  • 不影响 emacs 风格光标移动
  • 临时拼音输入,且带五笔编码反查
  • 自定义输入习惯,如四码唯一上屏,五码顶字上屏,分号、单引号选二三候选字,空码按空格清空等等

想要最灵活的定制,最强大的功能,选择必然是鼠须管了。然而鼠须管的缺点也相当明显,配置难度非常高,尤其是在一两年前,还得自己编译出最新版。幸好最近作者又再发力,易用性有了一定的提高。不过就目前的情况看来,要用鼠须管,最好你是一名程序员,或者至少是名专业用户。

安装

用 brew 安装非常简单。

1
brew cask install squirrel

鼠须管默认没有五笔,官方提供了一个工具——东风破,用于安装输入方案:

1
2
3
git clone https://github.com/rime/plum.git
cd plum
bash rime-install wubi pinyin-simp

五笔依赖 pinyin-simp 做拼音反查,所以这里一并安装了。

接下来我们还需要把五笔配置到输入法选单里,新建或修改以下文件。

1
2
3
4
# ~/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文件可以针对五笔输入方案定制,分享我的定制:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# ~/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.yamlsquirrel.yaml,对应的文件是default.custom.yamlsquirrel.custom.yaml。而针对输入方案的配置文件则是方案名.custom.yaml,比如五笔就是wubi86.custom.yaml了。

接下来需要考虑的是定制文件里怎样打补丁了,用一个例子做说明,~/Library/Rime/wubi86.schema.yaml里有如下片段。

1
2
3
4
5
6
translator:
  dictionary: wubi86
  enable_charset_filter: true
  enable_sentence: true
  enable_encoder: true
  ...

我们想把enable_sentence改成false,那么补丁可以这样写:

1
2
3
# ~/Library/Rime/wubi86.custom.yaml
patch:
  translator/enable_sentence: false # 关闭句子输入

领悟一下,详细还是看文档吧。

怎样调试?要看看我们的补丁打得对不对,可以在部署之后看~/Library/Rime/build/目录里对应的文件,这些是打完补丁后最终生成的文件。