跳到主要内容

基本概念

Rime 是一个输入法框架,并不是狭义上的“输入法”,而是将各种输入法的共性抽象出来的算法框架。通过不同的配置文件,Rime 可以支持多种输入方案(Schema),这个所谓的输入方案就是我们狭义上的“输入法”。比如朙月拼音输入法就是 Rime 自带的一种输入方案,另外还有比如四叶草输入法(https://github.com/fkxxyz/rime-cloverpinyin)等等。鼠须管、小狼毫、中州韵分别是 Rime 在不同操作系统下的实现程序。Rime 的配置、词库文件均使用文本方式,便于修改。所有文件均要求以 UTF-8 编码。在配置文件中,以 # 号开头表示注释。

配置文件所在的目录

Rime 有两个重要的配置目录:

共享配置目录

  • 【中州韻】 /usr/share/rime-data/
  • 【小狼毫】 "安裝目錄\data"
  • 【鼠鬚管】 "/Library/Input Methods/Squirrel.app/Contents/SharedSupport/"

用户配置目录

  • 【中州韻】 ~/.config/ibus/rime/ (0.9.1 以下版本爲 ~/.ibus/rime/
  • 【小狼毫】 %APPDATA%\Rime
  • 【鼠鬚管】 ~/Library/Rime/

共享目录下放置的是 Rime 的预设配置,在软件版本更新时候,也会自动更新该目录下的文件。所以请不要修改该目录下的文件。

用户目录则放置用户自定义的配置文件。我们要做的修改都放在用户目录下。

对于鼠须管而言,用户目录初始时只有如下几个文件。

  • installion.yaml 文件记录的是当前 Rime 程序的版本信息。其中有一个字段 installation_id 用来在同步用户词典时唯一标记当前 Rime 程序。

  • user.yaml 文件记录用户的使用状态。比如上次“重新部署”的时间戳,上次选择的输入方案等。

  • build 目录下放的是每次“重新部署”后生成的文件。包括字典文件编译后生成的「.bin」文件,包括与自定义配置合并后生成的各种 yaml 配置文件。

  • xxx.userdb 目录下放的是对应输入方案的用户词典。即用户在使用时候选择的词组、词频等动态信息,这个目录是实时更新的。

  • sync 目录是用来做用户数据同步的。每个 sync/installation_id 目录对应不同电脑上的 Rime 程序的用户数据。(如果你由多台电脑安装了 Rime,并设置了同步。)按照作者的说法,Rime 的用户词典同步原理是:

  • 手工从其他电脑复制或者从网盘自动同步 ⇒ sync/*/*.userdb.txt ⇒ 合并到本地 *.userdb ⇒ 导出到 sync/<installation_id>/*.userdb.txt

关于调试

Rime 的日志目录放在如下为止:

  • 【中州韻】 /tmp/rime.ibus.*
  • 【小狼毫】 %TEMP%\rime.weasel.*
  • 【鼠鬚管】 $TMPDIR/rime.squirrel.*
  • 早期版本 用户配置目录/rime.log

修改配置

如果想要修改配置,请不要直接修改原有的 xxx.yaml 文件,而是应该新建一份 xxx.custom.yaml 文件,其中 xxx 与原文件名相同。

.custom.yaml 文件中对于要修改的配置项,都需要放在 patch 根节点下面。

每次修改配置,都需要在鼠须管的菜单中选择“重新部署”后才能生效。

把鼠须管默认繁体改成简体

这次的目的:在 macOS 上安装鼠须管之后,第一次输入中文时默认候选是繁体。日常使用更希望默认输出简体,所以需要把当前输入方案切到 luna_pinyin_simp,也就是「朙月拼音·简化字」。

先确认鼠须管的程序和用户配置目录:

/Library/Input\ Methods/Squirrel.app
~/Library/Rime

其中 ~/Library/Rime 是用户配置目录。Finder 默认隐藏 ~/Library,可以在 Finder 里按 Command + Shift + G,输入 ~/Library/Rime 打开。

使用鼠须管自带的部署器设置当前方案:

"/Library/Input Methods/Squirrel.app/Contents/MacOS/rime_deployer" --set-active-schema luna_pinyin_simp

如果简体方案还没有显式加入用户方案列表,可以继续执行:

"/Library/Input Methods/Squirrel.app/Contents/MacOS/rime_deployer" --add-schema luna_pinyin_simp

这一步会在用户目录创建或更新 default.custom.yaml,内容类似:

patch:
schema_list:
- {schema: luna_pinyin_simp}

然后重新构建并部署用户数据:

"/Library/Input Methods/Squirrel.app/Contents/MacOS/rime_deployer" --build "$HOME/Library/Rime" "/Library/Input Methods/Squirrel.app/Contents/SharedSupport" "$HOME/Library/Rime/build"

最后让鼠须管重新加载配置:

"/Library/Input Methods/Squirrel.app/Contents/MacOS/Squirrel" --reload

可以检查 ~/Library/Rime/user.yaml,里面应当出现:

var:
previously_selected_schema: luna_pinyin_simp

修改完成后,再用鼠须管输入中文,候选词就会默认使用简体。

让鼠须管在其他软件里也默认生效

现象:在 VSCode 里已经把输入法从搜狗切换成鼠须管,但是切到其他软件后,输入法仍然默认是搜狗。

这是 macOS 的输入源记忆机制导致的。系统可以按 App 或文稿分别记住输入法,所以某个软件里切成了鼠须管,并不代表所有软件都会马上切过去。

如果希望各个软件尽量跟随当前输入法,可以关闭这个设置:

系统设置 -> 键盘 -> 文本输入 -> 输入源 -> 编辑

然后关闭:

自动切换到文稿的输入源

关闭之后,在任意 App 里把输入法切到「鼠须管 / Squirrel / Rime 简体 Hans」,其他软件通常也会跟随当前输入法。

如果希望不同软件使用不同输入法,比如 VSCode 用鼠须管,微信或浏览器继续用搜狗,也可以保留这个设置。每个软件里第一次手动切换后,macOS 会分别记住。

把中英文状态提示改成中和英

在鼠须管里按 Shift 切换中英文时,会弹出一个小窗口提示当前状态。以后可以把这个叫做「状态提示窗口」。在 Rime 配置里,更准确地说它是 ascii_mode 的状态提示。

默认的简体方案里,ascii_mode 的状态文案是:

states: [中文, 西文]

如果觉得「西文」不直观,可以在用户目录下新建或修改 luna_pinyin_simp.custom.yaml

vim ~/Library/Rime/luna_pinyin_simp.custom.yaml

写入:

# encoding: utf-8

patch:
"switches/@0/states": [,]

这里的 switches/@0 指的是方案里第一个开关,也就是 ascii_mode。两个状态分别对应中文模式和英文模式。

修改后重新部署并刷新鼠须管:

"/Library/Input Methods/Squirrel.app/Contents/MacOS/rime_deployer" --build "$HOME/Library/Rime" "/Library/Input Methods/Squirrel.app/Contents/SharedSupport" "$HOME/Library/Rime/build"
"/Library/Input Methods/Squirrel.app/Contents/MacOS/Squirrel" --reload

部署后可以检查生成文件:

sed -n '407,414p' ~/Library/Rime/build/luna_pinyin_simp.schema.yaml

看到类似下面的内容就说明生效了:

switches:
- name: ascii_mode
reset: 0
states: ["中", "英"]

修改候选词个数

Rime 默认每次出现的候选词个数为 5 个,我们可以将其修改为 1~9 之间的任意数。

在用户目录下新建一个 default.custom.yaml 文件(default.yaml 文件可以在共享配置目录下找到),写入如下内容:

patch:
"menu/page_size": 9 # 字段名加不加双引号都可以

# 或者是這樣

patch:
menu:
page_size: 8
# 但是注意这种写法是覆盖整个 menu 字段。好在默认情况下,menu 下一级也只有 page_size 字段,如果是有多个下级字段,请不要这么写。

上面的 default 文件是修改所有输入方案的候选词个数,如果只想针对某个输入方案做调整,比如对于朙月输入方案,那么只需要在用户目录下建立 luna_pinyin.custom.yaml 文件并写入如上内容,再重新部署即可。(注意,对输入方案定义文件 xxx.schema.yaml 的修改,新建的文件名只需要是 xxx.custom.yaml,并不需要加上 schema,写成 xxx.schema.custom.yaml 这样。)

使用,使用快捷键F4,然后像拼音打字选候选字一样,选择就好

输入方案的可切换状态,请参考后续的 switches 章节

主题

鼠须管的外观配置文件是 squirrel.yaml(小狼毫的外观配置文件是 weasel.yaml)。所以我们需要在用户配置目录下新建一个 squirrel.custom.yaml,参考或者拷贝开源项目的写法,通常有很多个主题,我们可以通过 style/color_scheme 来选择一个主题

开源项目的主题文件

> 参考: > > 鼠须管输入法配置 - 哈呜.王 (hawu.me) > > Rime Squirrel 鼠须管输入法配置详解 - 知乎 (zhihu.com)