Rime 输入法

Mac 下名字叫 「鼠须管」squirrel

Windows 下名字叫「小狼毫」weasel
Linux 下名字叫「中州韵」ibus

App 网站: https://rime.im

更新日志

Q: Why Rime?
A: 一款本地输入法 (没有云端),可以高度自定义,实现众多功能,包括候选框的大小与皮肤,词库与短语等,通过修改本地配置文件,并最终把它打磨成一款完全符合你输入习惯的输入法。[且 Apple 自带输入法非常反中文… 词库蹩脚自不必说,基本也告别了多音字。]

使用下来之后,觉得确实选词更智能,第一候选词正确率很高,基本不需要翻页。Rime 的学习能力很强。新词输入一两次之后就会成为第一候选了。

牛逼之处详见知乎: 超全超详细 Rime 中州韵输入法配置指南

Q: 有没有什么缺点呢?
A: 可以说是用细微 bug 换取中文输入法的便捷。VS Code Snippets 好像有点儿问题。中文输入下 autocomplete 不能用 Tab 键选择候选词。

快速输入时会吞词。如果缓慢输入, Rime 可以捕获全部输入内容。


帮助资料


快速入门

切换输入方案: Ctrl + `

分隔拼音: ' (single quote) 如 xi'an → 西安

符号表情 以v 开头的拼音缩写可以输入各种符号表情:

  • vszq 会显示数字圈 ⓪, ①, ②, ③, ④, ⑤, …
  • vzmq 会显示字母圈 ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, …
  • vzmh 会显示字母弧 ⒜, ⒝, ⒞, ⒟, ⒠, …

安装 app

  1. 首先进入 Rime 的官网,直接下载安装鼠鬚管的安装包 Squirrel.pkg 并安装。安装完成后,系统会提示退出重新登录。

  2. 然后进入 System Settings -> keyboard -> All Input Sources,点击左下角的 + 号,选择「Chinese, Simplified」,然后选择「鼠鬚管」或者 Squirrel - Simplified,点击「添加」。

  3. 之后就可以在菜单栏的输入法图标中选择「鼠鬚管」作为当前输入法。

快速入门:https://github.com/rime/home/wiki/UserGuide#打字入門


安裝配置器

/plum/ (中文名: 东风破) 是 Rime 输入法下的配置管理工具。

Refer to Plum GitHub repo for

  • installation of Rime configuration manager – Plum
  • installation of Rime input method packages
  • overview of basic input methods / packages

In /plum/ terms, a re-usable piece of configuration is known as a recipe (配方), denoted by the “℞” symbol.

初始化

curl -fsSL https://raw.githubusercontent.com/rime/plum/master/rime-install | bash

The one-liner runs the rime-install script to download preset packages and install source files to Rime user directory. (Yet it doesn’t enable new schemas for you)

以上命令行,安装配置管理器及预设配方。


安装输入方案

plum 是 Rime 输入法下的配置管理工具,提供了安装输入方案的功能。

You can add packages from all the great Rime developers on GitHub by specifying a list of package names or refer to packages by <user>/<repo>:

  • 注意以下命令行务必在 plum 目录下执行,否则会报错 bash: rime-install: No such file or directory

    # 进入 plum 目录
    cd /Users/menghan/plum
      
    # Install Syntax (输入法安装口令)
    bash rime-install <package-names-or-repo-paths>
    
  • 如果不想在 plum 目录下执行,可以把 plum 目录添加到环境变量 PATH 中。

    例如可以在 Shell 配置文件 ~/.zprofile 的末尾添加

    export PATH="$PATH:/Users/menghan/plum"
    

    然后就可以在任何目录下执行 rime-install 命令了。

  • 若要更新 plum 本身,执行 bash rime-install plum 即可。

# 从 GitHub 安装配方 或者 其他作者的配置方案
# 比如 lotem-packages.conf 是一个包含多个输入方案的配置文件
bash rime-install https://github.com/lotem/rime-forge/raw/master/lotem-packages.conf

# Method 2: or in short form: "<user>/<repo>/<filepath>"
bash rime-install lotem/rime-forge/lotem-packages.conf

# Method 3: or specify a branch: "<user>/<repo>@<branch>/<filepath>"
bash rime-install lotem/rime-forge@master/lotem-packages.conf

Q: What is a Rime input schema?
Rime input schema (Rime 输入方案 / 输入法) defines the rules of a specific “input method”.

It consists of

  • a configuration file named <schema_id>.schema.yaml, and
    • a customization file named <schema_id>.custom.yaml (用户自定义文件,可用于修改具体输入方案的默认配置)
    • 用户自定义文件名:将默认配置文件名中的 schema 替换为 custom 即可。<schema_id>.custom.yaml 优先级高于 <schema_id>.schema.yaml,可以覆盖默认配置。
  • usually an optional Rime dictionary (韵书) file named <schema_id>.dict.yaml.

luna_pinyin_simp 是一個单独的输入方案,有自己的配置文件,与 luna_pinyin 切换到简体模式有所不同。

  • luna_pinyin.schema.yaml:朙月拼音输入方案 → 可选择简体或繁体
    • 若要修改其配置,可以创建 luna_pinyin.custom.yaml 文件,在其中添加配置项目。
    • 使用后发现与 luna_pinyin_simp 相比,更加智能。比如中西文的自动切换,会更容易切换正确。标点的全半角更符合个人习惯。
  • luna_pinyin_simp.schema.yaml:朙月拼音・簡化字輸入方案

输入方案特点

  • 雾凇拼音:专业简体,词库更适配个人习惯;智能自动配置,安装即用;✅

  • 明月拼音:默认繁体比较烦,配置麻烦,需手动修改的地方多;

    Bugs:

    • 使用过程中发现,在打词的过程中,经常会丢一个字。❌
  • 输入方案列表一览


用户词典

词库是输入法好用的灵魂。Rime 有丰富的词库资源供用户安装。且用户可创建自己的词库,个性化定制输入法。

  • 〔用户词典〕 <词典名>.userdb/<词典名>.userdb.kct

    根据用户使用习惯,输入法自动生成的 “用户数据” (User Data)。包括实际上屏 (即在候选列表中选中,完成输入) 过的所有词汇及其上屏次数。

    自己调教训练的词库。

  • 〔用户词典快照〕 <词典名>.userdb.txt<词典名>.userdb.kct.snapshot 见于同步文件夹

  • 新建一个扩充词典文件,如 luna_pinyin.extended.dict.yaml

    Caveat:

    • 不要将英文单词用作拼音词典的编码

      会导致输入法无法正确识别拼音编码,只能输入英文单词,无法输入中文。

    • 不要将简拼用作拼音词典的编码

    雾凇拼音的扩展词库

    cn_dict/                # 中文词库目录
    ├── 41448.dict.yaml     # 常用字表,《通用规范汉字表》+ 基本的扩充
    ├── 8105.dict.yaml      # Unihan 大字表 (按需启用,默认未启用)
    ├── base.dict.yaml      # 基础词库,含两字词及调频
    ├── ext.dict.yaml       # 扩展词库,小词库,含多音字注音
    ├── others.dict.yaml    # 一些杂项,以及 Emoji 映射
    └── tencent.dict.yaml   # 腾讯词向量(大词库,部署时间较长)
      
    en_dicts/               # 英文词库目录
    ├── en.dict.yaml        # 20k 左右的常见单词 + 少许补充
    └── en_ext.dict.yaml    # 扩展词库,大部分是缩写或互联网相关。
    
  • 输入法自定义配置文件中,添加用户词典设定项,如 custom_phrase.txt.

其中 <schema-ID>.dict.yamlcustom_phrase.txt 合称为用户词库。具有以下特点:

  • 均由用户自行维护,词汇的创建、修改、删除通过直接编辑 yaml 或 txt 文档完成;
  • 用户创建的词汇,输入码与输出值可以不存在拼音上的对应关系,如输入“shen jiao suo”出现“深圳证券交易所”候选,输入“shen fen”出现你的身份证号候选。也正因如此,中英混输才可以实现;
  • 无法通过输入法自带的同步功能被同步。

词典文件范例 luna_pinyin.extended.dict.yaml

---
name: luna_pinyin.extended #
version: "2025.09.12"
sort: by_weight
use_preset_vocabulary: true

# 在这里导入其他词典
import_tables:
  - luna_pinyin    # 导入原版明月拼音的词典
...

自定义词库文件

自定义词库文件以 <my-dict-name>.dict.yaml 命名,位于 Rime 用户文件夹下。用户可以在其中添加自己常用的词汇,输入对应的编码即可快速输入这些词汇。

*.dict.yaml 优于 custom_phrase.txt,因为它可以被翻译器直接调用,不用训练 (有些词没办法训练),就可以从里面读取自造词。支持自动同步。

我的配置

  1. 新建词库文件 my_dict.dict.yaml,输入以下内容

    # User custom dictionary for Rime input method
    
    ​---
    name: my_dict
    version: "2026-05-05"
    sort: by_weight
    ...
    
    # 用户自定义词条
    # 以 Tab 分割:词汇<Tab>编码<Tab>权重,数值越大权重越高
    menghan	you xiang	3
    又双叒叕	uuuu	1
    主儿	vue	1
    重记	zhong ji	3
    

    词库名 xxx.dict.yaml 和词库中的属性 name: xxx 可以不同,但建议设置为一样的。

  2. 配置输入方案,挂载自己的词库。

    以雾凇拼音为例,在输入方案的 rime_ice.dict.yamlimport_tables 字段添加 my_dict,如下所示:

    # Rime dictionary
    # encoding: utf-8
     
    ​---
    name: rime_ice
    version: "2024-11-27"
    import_tables:
      - cn_dicts/8105     # 字表
      # - cn_dicts/41448  # 大字表(按需启用)(启用时和 8105 同时启用并放在 8105 下面)
      - cn_dicts/base     # 基础词库
      - cn_dicts/ext      # 扩展词库
      - cn_dicts/tencent  # 腾讯词向量(大词库,部署时间较长)
      - cn_dicts/others   # 一些杂项
     
      # 建议把扩展词库放到下面,有重复词条时,最上面的权重生效
      - my_dict           # 用户自定义词库
      # - mydict1           # 挂载配置目录下的 mydict1.dict.yaml 词库文件
      # - cn_dicts/mydict2  # 挂载 cn_dicts 目录里的 mydict2.dict.yaml 词库文件
    ...
    

    cn_dicts 是雾凇拼音的词库目录,里面有很多预设的词库,用户可以根据需要选择性启用。建议把自定义词库放在最后面。

    确保 rime_ice.schema.yaml 中的翻译器正确挂载词库文件 rime_ice.dict.yaml,如下所示:

    # rime_ice.schema.yaml
    
    translator:
      dictionary: rime_ice # 挂载词库文件 rime_ice.dict.yaml
    
  3. 重新部署输入法,输入相应的编码就可以显示相应内容了。比如输入 vue 就会显示「主儿」这个词了。

    词库文件大的情况下,首次部署会比较慢,需要等一会儿。 如果下次部署前没有修改词库,就会很快完成部署。

ref:


添加自定义短语

custom_phrase.txt 是一个用户自定义短语文件,位于 Rime 用户文件夹下。用户可以在其中添加自己常用的短语,输入对应的编码即可快速输入这些短语。

custom_phrase.txttabledb 格式的文本文件,不支持自动同步。若想同步用户自定义短语,

  • 推荐使用 userdb 格式的二进制文件,或者
  • 在多个设备上手动编辑 custom_phrase.txt 文件并保持一致。

使用说明

  1. Rime 用户文件夹下,新建 ~/Library/Rime/custom_phrase.txt

    输入内容,每行由这些组成: 文字短语权重 (决定重码的次序、可选),它们之间使用 Tab 制表符分隔,其中权重可以省略。 权重数值越大优先级越高。 如果备选词有多个音节,用空格隔开。

    以 Tab 分割: 词汇<Tab>编码<Tab>权重
    JavaScript→	js
    React→	react
    Vue→	vue→	3
    Vue 3→	vue→	2
    Vue 2→	vue→	1
    

    保存重新部署之后,输入相应的短语就可以显示相应内容了,例如

    rime 用户词典.png

    菜单栏 Squirrel >「同步用户数据」后,用户自定义短语即可在其他设备上使用。


    Tips:

    • 建议这个文件直接使用系统自动的文本编辑器 TextEdit 编辑,且使用 UTF-8、LF 编码和回车(毕竟代码编辑器的 Tab 键可能设置成了空格
      • 用 TextEdit 打开,选择「格式」→「使纯文本」,然后保存时选择「如果没有扩展名,请使用 .txt」,并选择「Unicode (UTF-8)」编码。
      • 缺点是不显示空白符 (whitespace characters),无从知道是空格还是 Tab。
    • 推荐用 BBEdit,文件信息可从下方状态栏看到。空白符可显示。
    • Vim 里可以直接配置

      :set fenc=utf8 nobomb ff=unix
      

      :set list 显示空白符,在我的 Vim 配置里,Tab 会显示为

      我的 Vim 里面默认 Tab 是 4 个空格,所以在 Vim 里输入 Tab 键会变成 4 个空格。可以先按 Ctrl+V,然后按 Tab 键来插入真正的 Tab 字符。

  2. 载入词库以启用自定义短语。

    这个文件编辑完成之后就可以到输入具体方案文件(<schema-ID>.custom.yaml)里添加内容:

    patch:
       engine/translators/@2: table_translator@custom_phrase 
       # 用户自定义词典设定项
       custom_phrase:
         dictionary: ""
         user_dict: custom_phrase
         db_class: stabledb
         enable_completion: false
         enable_sentence: true
         initial_quality: 1
    

    这里的 @2 是指 engine/translators 列表中的第三个元素。从0开始计数。


    如果不确定,可查阅具体的输入方案文件,找到 engine/translators 列表,确认一下翻译器顺序。

    比如 luna_pinyin.schema.yaml 里面的 engine/translators 列表如下:

    用户自定义词典翻译器是在第二个位置 (@1),@0 是拼音翻译器,@2 是反查翻译器。


    Attributes:

    • dictionary: 翻译器将调取此字典文件
    • user_dict: 设定用户词典名
    • db_class:: 设定用户词典类型,可设 tabledb〔文本〕或userdb〔二进制〕
    • enable_completion: 提前显示尚未输入完整码的字〔仅table_translator 有效〕
    • enable_sentence: 是否开启自动造句
    • initial_quality: 设定此翻译器出字优先级,数值越大优先级越高

    See HERE for all attributes of a translator.


    雾凇拼音中用户自定义词典翻译器的位置是第五个位置 (@4),见 rime_ice.schema.yaml 文件中的 engine/translators 列表。

    engine:
      translators:
        - punct_translator
        - script_translator
        - lua_translator@*date_translator    # 时间、日期、星期
        - lua_translator@*lunar              # 农历
        - table_translator@custom_phrase     # 自定义短语 custom_phrase.txt
        - table_translator@melt_eng          # 英文输入
        - table_translator@cn_en             # 中英混合词汇
        - table_translator@radical_lookup    # 部件拆字反查
        - lua_translator@*unicode            # Unicode
        - lua_translator@*number_translator  # 数字、金额大写
        - lua_translator@*calc_translator    # 计算器
        - lua_translator@*force_gc           # 暴力 GC
    

    Q: 啥是翻译器?
    A: 简而言之,翻译器完成由内部编码到文字的翻译。↩︎

    更多关于translator 翻译器

    engine:
      translators:
        - punct_translator               # 标点符号翻译器
        - table_translator@custom_phrase # 用户自定义词典,拉丁字母翻译器
        - reverse_lookup_translator      # 反向查询翻译器
        - script_translator              # 罗马字母翻译器
    

用户自定义词典设定项

以下解释自定义词典常用字段的含义:

patch:
   engine/translators/@2: table_translator@custom_phrase 
   # 用户自定义词典设定项
   custom_phrase:
     dictionary: ""             # 字典文件
     user_dict: custom_phrase   # 在本地生成的用户词典名称
     db_class: stabledb         # 用户词典格式,tabledb(文本) 或 userdb (二进制)
     enable_completion: false   # 禁止补全; 编码逐渐提示开关;编码提示
     enable_sentence: true      # 造句; 是否整句连打,是否自动造句,否则为四码自动上屏
     initial_quality: 1         # 该翻译器出字优先级别
     enable_encoder: true       # 是否自动造词
     enable_user_dict: true     # 是否开启用户词典,以记录动态字频和用户词词频

db_class 值默认为 userdb

  • userdb: 即二进制文件,输入过的内容会记录在 *.userdb/ 文件夹中,只有在同步后才能在同步目录看到人类可读的用户词典。

    如有多平台同步需求,使用默认值 userdb

    配置目录下会生成 *.userdb/ 文件夹 (比如雾凇拼音会生成 rime_ice.userdb/ 文件夹),里面是二进制的用户词典。

    点击「同步用户数据」后,Rime 会和配置目录下的 *.userdb/ 进行双向更新同步,并在同步目录(<sync-dir>/<installation_id>)下生成 *.userdb.txt,里面都是输入过的内容。

  • 另一个值是 tabledb,会直接在配置目录生成一个人类可读的 .txt 文本文件。支持动态调频。

  • stabledb 是 tabledb 的一个变体,文本格式词库,只读数据库,无法动态调频。

ref:


Rime 配置文件目录

参考资料


💡Main Takeaways:

  • 用户配置文件目录 /Users/<user-name>/Library/Rime/

    See HERE for a GitHub backup for the Rime configuration files.

    ❗The GitHub repo is private for security reasons because it contains sensitive user data. User input history is highly sensitive, keep your user dictionary (.userdb.txt) secure and private.

    Q: 为啥在 iCloud 已经有同步文件了,还要在 GitHub 备份用户配置文件?
    A: 原因有二:

    1. iCloud 同步文件夹里面的配置不完整,无法根据它恢复输入法的完整配置。
    2. iCloud 无版本控制,无法追踪修改历史。
  • 注意修改配置后需要重新部署 (deploy) 输入法。

    如果担心之后的配置出了问题找不到,可以每一步都重新部署一次,确保代码没有出现问题。

    部署后出现错误,请查看 INFO 日志 (参考),找到行首字符为 E 的记录,根据错误信息以及上下文排查出错的配置文件。

  • *.schema.yaml 文件直接修改可以生效,但是弊端是如果 Rime 升级了,可能会覆盖掉你的修改。所以推荐使用 *.custom.yaml 文件来覆盖默认配置。

    Syntax: patch: "一级设定项/二级设定项/三级设定项": 新的设定值. E.g., 以下例子设定每页候选词个数为 4 (允许的范围是 1〜9):

    更多关于打补丁的语法见输入方案的配置

    在用户目录建立文档 default.custom.yaml (对应 default.yaml 的自定义),添加以下内容:

    patch:
      # ✅ 修改列表中一个具体字段
      "menu/page_size": 4
    

    反例:

    patch:
      menu:
        # ❌ 不要用这个 这样会导致 menu 下只有 page_size 一个配置
        page_size: 4 
    

    注意:

    • 不要用这个,这样会把所有 menu 内部的配置内容清空,只有一个 page_size 配置。↩︎

    • 如果有较多修改项,可以直接从 default.yaml 全部复制过来,再修改。

    • 如果选项是数组,比如 switches,得用 switches/@n: 什么的,可读性不好,改多了就乱了,万一原始方案文件更改了顺序就会造成错误,不如全部复制过来再改。↩︎

    Q: 如何知道我把原始配置清空了?
    A: 输入框,候选词框完全没有颜色了,很难看清。

    最后重新部署输入法即可生效。

  • 自定义配置除了文件名有差异之外,它的配置项也比默认的配置多一个层级,需要统一放在 patch 节点之下。
    • 一个 *.custom.yaml 文件内只能有一个 patch 节点。
  • 若要添加新的设定项,可以在 patch 下添加新的行 name: value
    • name 字段可以是多级的,用 / 分隔。
    • name 字段可选用单/双引号括起来,如 'name': value 或者 “name”: value
  • default.custom.yaml 的修改会影响所有输入方案。

  • 如果只想影响某个输入方案,可以修改对应的 <schema-ID>.custom.yaml 文件,例如 luna_pinyin.custom.yaml

    注意自定义文件名:将默认配置文件名中的 schema 替换为 custom 即可。<schema-ID>.custom.yaml 优先级高于 <schema-ID>.schema.yaml,可以覆盖默认配置。


配置文件

默认配置 自定义配置 功能
default.yaml defalut.custom.yaml 全局配置
squirrel.yaml squirrel.custom.yaml 鼠须管外观设置; 在指定的应用程序中,改变输入法的初始转换状态 (全局配置)
luna_pinyin.schema.yaml luna_pinyin.custom.yaml 朙月拼音输入方案 (局部配置)
rime_ice.schema.yaml rime_ice.custom.yaml 雾凇拼音输入方案 (局部配置)

Note:

  1. 局部配置优先级高于全局配置。
  2. <schema-ID>.custom.yaml 优先级高于 <schema-ID>.shcema.yaml

常用配置文件

全局配置文件:

  • default.custom.yaml: 默认核心配置文件,自定义全局样式。

    比如可设置候选输入法,候选词个数,按键绑定,中英切换等。

  • squirrel.custom.yaml: 修改 rime 的 皮肤设置,候选词横排显示,程序默认英文等,定制外观。新建文件,输入你想要的配置项即可。

    squirrel.yaml 配置指南

针对具体输入方案 (schema) 的配置文件:

  • luna_pinyin.schema.yaml 朙月拼音
  • pinyin_simp.schema.yaml 拼音・简化字
  • rime_ice.schema.yaml 雾凇拼音

Q: 如何修改每页候选词个数?
A: rime 默认的是5个候选词。修改 default.custom.yaml 文件中的 page_size 字段,例如:

patch:
    "menu/page_size": 4

default.custom.yaml

Rime 配置文件

设置

  • 候选输入法: 只保留需要的输入法
  • 候选词个数
  • 按键绑定
  • 中英切换

只保留明月拼音和雾凇拼音

默认安装有很多输入方案,可以只保留需要的输入方案,其他的删除掉。

# default.yaml
schema_list:
  - schema: luna_pinyin         # 明月拼音
  - schema: luna_pinyin_simp    # 明月拼音 简化字模式
  - schema: luna_pinyin_fluency # 明月拼音 语句流
  - schema: bopomofo            # 注音
  - schema: bopomofo_tw         # 注音 台湾正体模式
  - schema: cangjie5            # 仓颉五代
  - schema: stroke              # 五笔画 (笔画输入法)
  - schema: terra_pinyin        # 地球拼音 dì qiú pīn yīn

只保留需要的输入法: default.custom.yaml 中修改 schema_list 字段

# default.custom.yaml
patch:
  # 添加你想要保留的输入方案
  schema_list:
    - schema: luna_pinyin       # 明(朙)月拼音,默认繁体比较烦 ❌
    - schema: rime_ice          # 雾凇拼音,专业简体;智能自动配置,安装即用;✅

schema 名字去 <sheme-ID>.schema.yaml 里找 schema_id 字段,例如 rime_ice.schema.yaml 里有

schema:
  schema_id: rime_ice

切换中英文

ascii_composer/switch_key ↩︎

可用的按键有 Caps_Lock, Shift_L, Shift_R, Control_L, control_R

  • 设为 noop,屏蔽该切换键
  • Shift_L 为左 Shift, Shift_R 为右 Shift

翻页

早先流行用 - 和 = 这一对符号换页,如今流行用 , 和 . 。

patch:
  key_binder/bindings:
    # 翻页
    - { when: has_menu, accept: Tab, send: Page_Down }            # "tab" 键翻页, 和下一条 "tab" 键分词只能二选一
    - { when: composing, accept: Shift+Tab, send: Shift+Left }    # "Shift+Tab" 键向左选拼音分词
    - { when: paging, accept: minus, send: Page_Up }              # "-" 上一页
    - { when: has_menu, accept: equal, send: Page_Down }          # "=" 下一页
    - { when: paging, accept: comma, send: Page_Up }              # "," 上一页
    - { when: has_menu, accept: period, send: Page_Down }         # "." 下一页
    - { when: paging, accept: bracketleft, send: Page_Up }        # "[" 上一页
    - { when: has_menu, accept: bracketright, send: Page_Down }   # "]" 下一页

语法解释

  • when: has_menu 当展现候选菜单的时候,accept: <key> 符号键,send: Page_Up 向后翻页;
  • when: paging 当已有向后换页动作时,send: Page_Down 向前翻页;
  • 我目前的设置为 = / ] 向后 和 - / [ 向前换页。

ref:


快捷键

patch:
  key_binder/bindings:
    - { when: has_menu, accept: semicolon, send: 2 }              # ":" (分号)选择第 2 个候选词
    - { when: has_menu, accept: apostrophe, send: 3 }             # "'" (引号)选择第 3 个候选词
    - { when: composing, accept: Shift+Tab, send: Shift+Left }    # "Shift+Tab" 键向左选拼音分词
    - { when: composing, accept: Control+a, send: Home }          # "Control+a" 光标移至首
    - { when: composing, accept: Control+e, send: End }           # "Control+e" 光标移至尾
    - { when: composing, accept: Control+g, send: Escape }        # "Control+g" 清码
    - { when: composing, accept: Return, send: Escape }           # "Return" 回车清码
    - { when: always, accept: Control+Shift+1, select: .next }             # 切换输入方案
    - { when: always, accept: Control+Shift+2, toggle: ascii_mode }        # 中/英文切换
    - { when: always, accept: Control+Shift+3, toggle: full_shape }        # 全角/半角切换
    - { when: always, accept: Control+Shift+4, toggle: simplification }    # 繁简体切换
    - { when: always, accept: Control+Shift+5, toggle: extended_charset }  # 通用/增广切换(显示生僻字)
    - { when: composing, accept: Control+b, send: Left }           # "Control+b" 移动光标
    - { when: composing, accept: Control+f, send: Right }          # "Control+f" 向右选择候选词
    - { when: composing, accept: Control+h, send: BackSpace }      # "Control+h" 删除输入码

主题外观

Rime 支持自定义皮肤主题,修改 squirrel.custom.yaml 文件中的 style 字段,例如:

An example configuration to customize the appearance of the Rime input method:

# squirrel.custom.yaml

patch:

  show_notifications_when: appropriate  # 状态通知,适当,也可设为全开(always)全关(never) 

  style:
    color_schema: github                        # 主题,可选 apathy 等
    horizontal: false                           # 是否水平排列 → deprecated,改成 candidate_list_layout: linear/stack
    inline_preedit: true                        # 是否行内编辑 
    candidate_format: "\u2005%c\u2005%@\u2005"  # 1/6 em 空格 => U+2005

    label_font_face: "JetBrains Mono Medium"    # "Skia"
    label_font_point: 16                        # 候选编号大小

    font_face: Noto Sans Mono SC        # 候选字字体
    font_point: 21                      # 候选字词大小

    ## 下面是关于输入法窗口外观的特殊设定
    hilited_corner_radius: 3
    corner_radius: 5                    # 候选条圆角
    border_height: 6                    # 窗口边界高度,大于圆角半径才生效
    border_width: 6                     # 窗口边界宽度,大于圆角半径才生效
    spacing: 2                          # 候选词行距, 横向排列时无效
    line_spacing: 6
    border_color_width: 5 

color_schema: github 配色名必须存在于 preset_color_schemas 之中。preset_color_schemas 是和 style 同级的一个字段,里面定义了很多预设的配色方案 (见 squirrel.yaml),用户可以直接使用这些预设的配色方案,也可以在 squirrel.custom.yamlpatch 添加自己的配色方案。

inline_preedit: true/false 是否行内显示输入码,defaults to true

  • true 输入码行内显示,候选框没有编辑区 ✅
  • false 行内显示空白占位符,候选框有编辑区 → ❗几个缺点: 不好看; theme 如果不适配,输入码会看不清楚; 插入文字的位置错误,光标会移动到词的中间。

inline_candidate: true/false 是否行内显示第一候选,defaults to false

inline_candidate
true false
inline_preedit true 第一候选及未成字编码皆行内显示,候选框没有编辑区 输入码行内显示,候选框没有编辑区
false 第一候选行内显示,候选框有编辑区 行内显示空白占位符,候选框有编辑区

ref:


横排支持

# squirrel.custom.yaml

patch:
  style:
    candidate_list_layout: linear  # 水平排列 

在新版本中 (1.0.1 版本以后),style/horizontal 不再受支持,改成 candidate_list_layout: linear。See rime/squirrel GitHub Release Page.

ref:


输入方案的配置

针对具体输入方案 (schema) 的用户自定义配置文件

每个输方案都有自己的默认配置文件 <sheme-ID>.schema.yaml,可以创建 <sheme-ID>.custom.yaml 文件,在其中添加自定义配置项目。

  • 不要在 <sheme-ID>.schema.yaml 里直接修改,升级 Rime 可能会覆盖掉你的修改。
  • 自定义设置添加到 <sheme-ID>.custom.yaml「方案选单」其优先级高于 <sheme-ID>.schema.yaml,可以覆盖默认配置。
  • 个人配置跟默认配置文件有重复是没有问题的。可以先将默认配置中需要修改的部分整体复制到个人配置中,然后再针对具体字段进行调整。这样会增强配置文件可读性,不必两个文件来回查阅。
    • 此建议尤其适用于对 swithces 这种数组类型的字段进行修改。

# luna_pinyin.schema.yaml (明月拼音输入方案默认配置)
switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文 ] # 只保留中文输入法,避免无意间切到英文输入状态
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: simplification
    states: [ 漢字, 汉字 ] # 默认繁体
  - name: ascii_punct
    states: [ 。,, ., ]

switches 字段定义输入法切换开关列表。列表顺序很关键,关系到自定义配置时的序号 @#,这个 # 要对应列表中的顺序。

  • @0 (ascii_mode): 中英文切换
  • @1 (full_shape): 全半角切换,默认全角
  • @2 (simplification): 繁简体切换,默认繁体 → 建议改成简体。
  • @3 (ascii_punct): 中西文标点符号切换,默认中文标点

补丁的语法

patch 时支持用 / 来分隔节点。

比如默认配置文件如下

a:
  b: value
c:
  d:
    e: value

打补丁时可以这样写

patch:
  a/b: new_value
  c/d/e: new_value

以明月拼音为例,修改 luna_pinyin.custom.yaml 文件。

# luna_pinyin.custom.yaml (明月拼音自定义配置)
patch:
  "switches/@0/reset": 0              # 默认中文输入
  "switches/@2/reset": 1              # 默认简体
  engine/translators/@1: table_translator@custom_phrase
  
  # 用户自定义词典设定项
  custom_phrase:
    dictionary: ""
    user_dict: custom_phrase
    db_class: stabledb
    enable_completion: false
    enable_sentence: true
    initial_quality: 1
  
  punctuator/full_shape:
    # 全角标点举例,注意要将所有符号都复制粘贴过来
    "(" : 
    ")" : 
    ... : ...
  
  punctuator/half_shape: 
    # 半角标点举例,注意要将所有符号都复制粘贴过来
    "(" : "("
    ")" : ")"
    "#" : "#"
    ... : ...

列表字段解释:

  • switches: 输入法切换开关列表 ↩︎

    • name: 开关名称

      ascii_mode: 中英文切换
      full_shape: 全半角切换
      simplification: 繁简体切换 \

    • reset: 切换时重置为第几个状态,0 是第一个
    • states: 可选状态列表

    例如上面配置中,ascii_mode 只保留了一个状态「中文」,避免无意间切到英文输入状态。


中英文标点符号

雾凇拼音配置文件: ~/Library/Rime/rime_ice.custom.yaml

  • punctuator: 句读处理器,将单个字符按键直接映射为文字符号。

    Syntax: punctuator/<full_shape | half_shape>: { "<key>": "<mapped_character>" }

    对应不同状态:

    • full_shape 全角标点,宽度大,占用两个字节;
    • half_shape 半角标点,宽度小,占用一个字节;

    <key> 是按键,<mapped_character> 是映射后的字符,如映射一组字符,用 [] 括起来。

    • 注意 <key> 按键均为半角字符,<mapped_character> 可以是全角或半角字符
    • 个人习惯是用半角,以后只在 half_shape 里设置即可。

    定义标点符号的时候:

    • 一对多可以用 [] 括起来,例如:

      punctuator/half_shape:
        "...": ["...", "…"]
      
    • 有些标点符号需要 escape, 例如:Backslash \, double quote ",需要在前面加 \ 转义,例如:

      punctuator/full_shape:
        "\"" : { pair: [ "“", "”" ] }
        "\\" : [ , , "\\" ]
      punctuator/half_shape:
        "\"" : "\""
        "\\" : ["、", "、", "/", "/", "÷"]
      

      punctuator/full_shape 解释:

      {} 表示一个对象/字典,用来定义键值对配置。

      pair 表示成对符号,定义了符号的配对输入规则。 pair 是一个数组,包含两个元素。

      • 第一个元素 :左引号 (开始符号); curly quote 弯引号
      • 第二个元素 :右引号 (结束符号); curly quote

      第一次输入 " 时,输出左引号 ,第二次输入 " 时,输出右引号 。第三次输入又输出左引号,如此循环。

      半角下一律用 " (直引号)。

    更多关于标点符号的配置举例见这里.


  • engine/translators: 翻译器列表,完成由内部编码到文字的翻译。

    • table_translator@custom_phrase:用户自定义词典翻译器
    • @1 是指 engine/translators 列表中的第二个元素。序号从 0 开始计数。

    Q: 如何知道某个列表元素构成和排列?

    A: 可查阅具体的输入方案文件 <sheme-ID>.schema.yaml,找到 engine/translators 列表,确认一下翻译器顺序。比如明月拼音,可查询 luna_pinyin.schema.yaml 文件。

    patch:
      engine/translators/@1: table_translator@custom_phrase
    
    • 列表不分先后,书写顺序并不决定编译指令的先后。
    • 注意序号从 0 开始计数,因此 @1 是指 engine/translators 列表中的第二个元素。
    • @before <序号> 代表 <序号> 之前的那个元素; @after <序号> 代表 <序号> 之后的那个元素; @last 代表列表中的最后一个元素; @after last 可简写为 @next,意为向列表末尾添加元素
    • 更多语法见下方参考目录 ref 之补丁。↩︎

ref:


中英文切换设置

某一些 app 只需要英文输入法,比如 Alfred, Terminal 等。这时可以设置 Rime 在这些 app 里默认英文输入法,这样可避免手动切换。

Q: 中英文反复横跳,如何设置英文用系统默认,rime 默认为中文?
A:

  1. 找到你想要设置的输入法配置文件,例如 luna_pinyin.custom.yaml,然后添加字段如下:

    switches:
      - name: ascii_mode
        reset: 0
        states: [ 中文 ] # 只保留中文输入法,避免无意间切到英文输入状态
    
  2. 全局配置文件 default.custom.yaml 中,添加如下字段

    patch:
      ascii_composer/switch_key:
         # Shift_L: clear
         # Shift_R: clear
         Shift_L: noop
         Shift_R: noop
      key_binder/bindings:
         - { when: always, accept: Control+Shift+2, toggle: ascii_mode }
         - { when: always, accept: Control+g, send: Escape }
    
    • 这样设置后,Shift 键不再切换中英文状态,而是由 Control + Shift + 2 来切换中英文状态。
    • accept: 用户实际输入的键;send: 发送给 rime 的按键;toggle: 切换某个状态;when: 什么时候生效。
    • when 可以接受的值有

      paging     翻页
      has_menu   操作候选项用
      composing  操作输入码用
      always     全域
      

    ref: https://blog.einverne.info/post/2021/10/rime-shortcut.html

  3. 对于某些软件,如 Alfred, 只需要英文。应用场景为,当下输入法为 Rime 中文时,切换到 Alfred 之后自动变为英文输入。

    在全局配置文件 squirrel.custom.yaml 中添加字段如下:

    patch: 
      # 以下程序中默认英文输入
      app_options:
         com.runningwithcrayons.Alfred:
             ascii_mode: true
    
    • ascii_mode 设为 true,表示该程序中默认英文输入;false 表示该程序中默认中文输入。
      • ascii_punct: true:开启英文标点 ↩︎

总结

  • 如此设置后,英文用系统自带 ABC,中文用 Rime。相当于取消 Rime 自动中英文切换的功能。(因为有时会误切,不太聪明的样子) 而且当下是中文还是英文输入法状态,一目了然。Rime 状态栏不能显示中英文,每次都要在文档中动态显示,觉得一是很分心,二是中英文跳动太频繁,且自作聪明。

  • 意外的效果是,现在可以直接 Space 键选词了,不需要按两次选第一候选词了。 根据试验,这个是 default.custom.yaml 中的某个配置项起作用了 (具体哪个不详)。

不使用 Squirrel 英文态,但是依然想用 Shift_L 来切换中英文状态


Q: 如何在特定程序里关闭中文输入?
A: 修改 squirrel.custom.yaml 文件中的 ascii_mode 字段,例如:

patch:
    app_options/<app-identifier>:
        ascii_mode: true

自定义 Mac 应用程序的初始转换状态,首先查看应用的 Info.plist 文件,得到该应用的 Bundle Identifier,通常是形如 com.apple.Xcode 的字符串。

  1. 找到目标 app, 右键选择 Show Package Contents
  2. 进入 Contents 目录,打开 Info.plist 文件
  3. 搜索 (cmd + F) 找到 CFBundleIdentifier 字段,复制其值

ref: 在特定应用中默认英文输入


iPhone 上使用 Rime 输入法

Q: iPhone 下有没有办法使用 Rime?
A: iOS 下有个 app 叫 仓输入法

「仓输入法」是基于 Rime 的 iOS 输入法。

参考资料:

快速入门: 方案选「仓·九宫格」,键盘布局选「九宫格」。


Q: 为什么我输入后,有中文候选字,但不显示拼音,而是显示数字?
A: 没有为方案添加 t9/isDisplayOriginalPreedit 选项或者此选项值不对。在 t9.schema.yaml 文件中添加以下内容:

# t9.schema.yaml

t9:
  # 是否显示 rime 中原始的预编辑文本,默认为 true
  # true: 对 preedit 不做处理,显示 rime 返回的原始 preedit 值。
  #       如果想通过 lua 自己调整 preedit 的显示,可以设置为 true。
  # false: 根据候选字 comment 显示转换后的 preedit 内容。
  #        注意:请务必保证候选字 comment 有效且正确,否则可能导致预编辑文本显示异常。
  isDisplayOriginalPreedit: false
❗更新版本后,t9.schema.yam 会被覆盖。如果发现九宫格输入法输入的是数字,且没有中文候选字,可能是因为新版本中 t9/isDisplayOriginalPreedit 选项恢复了默认值 true 了。需要手动修改回为 false

Workaround: 新建 t9.custom.yaml 文件,以补丁的方式在其中添加上述配置项,这样更新就不会被覆盖了。

# t9.custom.yaml
patch:
    t9/isDisplayOriginalPreedit: false

更多相关配置

# t9.schema.yaml

# import content from rime_ice.schema.yaml
__include: rime_ice.schema.yaml:/

speller:
  # 注意: 这里添加了数字 0123456789
  alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
  initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
  algebra:
    # ### 超级简拼(可选)
    - abbrev/^([a-z]).+$/$1/ # 超级简拼
    - abbrev/^([zcs]h).+$/$1/ # 超级简拼中,zh ch sh 视为整体(ch'sh → 城市),而不是像这样分开(c'h's'h → 吃好睡好)。
    - derive/^([nl])ve$/$1ue/
    - derive/^([jqxy])u/$1v/
    - derive/un$/uen/
    - derive/ui$/uei/
    - derive/iu$/iou/
    - derive/([aeiou])ng$/$1gn/
    - derive/([dtngkhrzcs])o(u|ng)$/$1o/
    - derive/ong$/on/
    - derive/ao$/oa/
    - derive/([iu])a(o|ng?)$/a$1$2/
    # ### 九宫格映射(必须)
    - derive/[abc]/2/
    - derive/[def]/3/
    - derive/[ghi]/4/
    - derive/[jkl]/5/
    - derive/[mno]/6/
    - derive/[pqrs]/7/
    - derive/[tuv]/8/
    - derive/[wxyz]/9/

__include 语法用来引入其他配置文件的内容。目标配置节点的路径以 <filename>:/ 开始,可省略扩展名 .yaml


雾凇拼音推荐用 26 键输入法,九宫格输入法也支持,但需要额外配置。

Q: 九宫格下,雾凇拼音输入的是数字,且没有中文候选字?
A: 需要修改方案配置文件 rime_ice.schema.yaml:

  1. 添加 engine/processors/t9_processor 选项,并且 t9_processor 必须要在列表首位

    engine:
      processors:
        - t9_processor
        # 其他 processors
    
  2. 添加 t9 配置参数 t9/isDisplayOriginalPreedit,并且设置为 false

    t9_processor 会用来处理九键输入的字符,如回车键、删除键等。

  3. speller 添加 t9 映射

    此步骤将词库中的 ASCII 小写字母派生为数字,如 “abc” 映射为 “2”等,输入数字可模糊匹配词库,输入 ASCII 小写字母可精确匹配词库。

如此设置后可以输入中文,但是候选字显示无序拼音。「仓九宫格」方案候选字显示正常。

ref:


同步

Rime 同步功能可以将用户词典在多台设备之间进行同步,保持输入习惯的一致性。比如你有两台 PC,一部 iPhone,三台设备都安装了 Rime 输入法,并且配置了相同的同步目录,那么在其中一台设备上用户数据文件 *.userdb.txt 会自动同步到其他两台设备上。

注意

  • RIME 自动同步功能只支持 db_class: userdb 类型(二进制格式)的词库。

    <schema-ID>.userdb.txt 是输入方案记录用户输入习惯的词库文件。输入方案自动生成的用户词典文件,格式为二进制,db_class: userdb。Rime 同步功能会自动识别并同步这些用户词典文件。

    如果你的输入方案为 db_class: stabledb (如雾凇拼音) 或 db_class: tabledb 类型(文本格式)的词库,需要先将其转换为 userdb 类型,才能使用同步功能。

  • 用户自定义词库 (<schema-ID>.dict.yaml 和 custom_phrase.txt) 不支持自动同步功能,需要手动复制粘贴到其他设备的用户文件夹中。

    <schema-ID>.dict.yaml 和 custom_phrase.txt用户自定义的词库文件,格式为文本,不属于 Rime 同步功能支持的 userdb 类型,因此无法自动同步。需要手动复制粘贴到其他设备的用户文件夹中。

更多关于用户数据和用户词库见这里.


配置同步文件夹

要实现多端同步,需要解决的最核心问题是找一个可以在这三端都能访问到的位置,这个文件夹在 Rime 中叫做 sync_dir,需要在每台设备上设置为同一个路径。每次同步用户数据之后,这个文件夹里面对应你设备 installation_id 的子文件夹里就会生成一个 <schema-ID>.userdb.txt 文件,这个文件就是用户词典的快照,包含了用户输入习惯的记录。 Rime 同步功能会自动识别,并双向合并同步这些用户词典文件。

这个 sync_dir 文件夹可以放在任何你想放的位置,只要三台设备都能访问到就行了。常见的做法是放在第三方云盘的同步文件夹里,比如 iCloud Drive, Dropbox, 或者 NAS 等,这样就可以通过云盘的同步功能来实现 Rime 同步。

同步文件夹不会占用太多存储空间,大概二三十兆。不必担心会占用太多 iCloud 云盘空间。


配置同步文件夹

修改 ~/Library/Rime/installation.yaml 文件:

installation_id: "MBP16"             # 同步时会创建文件夹,保存到 RimeSync 目录中
sync_dir: "~/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync"   # 多个设备保存的共同目录,此处为 iCloud 路径

我的同步文件夹结构如下:

$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync
├── iPhone
├── MBP14
└── MBP16

对应我的三台设备: iPhone, MBP14, MBP16。

  1. 设置 installation_id 来区分来自不同的机器/系统的用户词典 (设备ID),会自动生成这个 id 值为文件夹的名字。

    Rime 会随机生成一个 UUID 作为标识,但是不便于记忆和区分不同设备。用户可以自行设置一个易记的名字。

    这里我定义文件夹名字为 MBP16,可根据偏好修改为任意文件名。

  2. 设置 sync_dir 为多设备下统一保存路径。

    此处我定义为 iCloud 下的 Documents/config_files/RimeSync 文件夹。← 所有设备的 sync_dir 都要设置为这个路径。

    iCloud Drive 的路径为 ~/Library/Mobile Documents/com~apple~CloudDocs/

  3. 配置后点击菜单栏 Squirrel >「同步用户数据」即可备份配置和输入习惯。

    要求磁盘文件的 Access Permission > 同意即可。

  4. 此时你可以去 sync_dir 目录下查看,里面会生成一个以 installation_id 命名的文件夹,里面包含用户词典 (<schema-ID>.userdb/) 和配置文件的快照 (<schema-ID>.userdb.txt)。

至此,Rime 同步功能就配置好了。你在其中一台设备上输入过的内容会自动同步到其他设备上,保持输入习惯的一致性。 注意: custom_phrase.txt 里面的自定义词库内容不支持自动同步,需要手动复制粘贴到其他设备的用户文件夹中。


示例2: 使用 Dropbox 同步

比如设置 sync_dir: 'D:\Dropbox\RimeSync'

与安装在其他系统上的 Rime 同步后,同步文件夹呈如下布局:

D:\Dropbox\RimeSync\id-xxx\luna_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-xxx\terra_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-xxx\installation.yaml
D:\Dropbox\RimeSync\id-xxx\default.custom.yaml
D:\Dropbox\RimeSync\id-xxx\weasel.custom.yaml

D:\Dropbox\RimeSync\id-yyy\terra_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-yyy\installation.yaml
D:\Dropbox\RimeSync\id-yyy\default.custom.yaml
D:\Dropbox\RimeSync\id-yyy\squirrel.custom.yaml

D:\Dropbox\RimeSync\id-zzz\luna_pinyin.userdb.txt
D:\Dropbox\RimeSync\id-zzz\installation.yaml
D:\Dropbox\RimeSync\id-zzz\alternative.yaml
D:\Dropbox\RimeSync\id-zzz\luna_pinyin.custom.yaml

id-xxx, id-yyy, id-zzz 分别为不同设备的 installation_id

PC-1 里点【同步】,通过网盘同步到 PC-2,PC-2 再点同步,才可以获得 PC-1 输入过的内容。

同步功能原理:

同步时,依次将各子文件夹中的词典快照 (*.userdb.txt) 合并到用户词典,最后为合并后的用户词典生成一份新的快照文件。

另外,还会把用户文件夹中非自动生成的 .yaml 文件及 .txt 文件单向备份到同步文件夹。

  • 用户词典双向

    举例来说,甲电脑个人词典累积了词汇 ABC,乙电脑累积了词汇 DEF,那么,通过第三方云同步和 Rime 同步后,个人词典词汇会双向同步合并为 ABCDEF。

  • 个人配置单向

    • 是指将配置文件,单向地从「用户文件夹」同步进入「同步文件夹」。这也是为了保持配置的一致性的必须方案。因为,若这两个文件夹中的配置不一致时,必然产生混乱。因而必须由用户手动。

    • 也就是说,同步主要针对的是词库,配置文件只算是备份了一下。

      如需同步配置文件,如 *.custom.yaml,需要手动复制粘贴,最好按照更新时间定期复制粘贴一下。


在其他设备同步用户数据

  1. 在其他设备上安装 Rime 输入法,并配置 installation.yaml 文件,确保 sync_dir 与之前的设备一致。

    installation_id 可以设置为不同的名字,以区分不同设备的用户数据。

  2. 点击菜单栏「同步用户数据」,即可将之前设备的用户数据同步到当前设备。

Rime 同步


同步到 iPhone

目前在 「仓输入法」中,有两个不同的同步功能:「RIME 同步」和「iCloud 同步」。

  • RIME 引擎的同步功能,主要是同步不同设备的词库文件 (当然也包含一些配置文件)。→ 设备间词库同步用 ✅

    注意 RIME 同步功能只支持 「userdb」 类型(二进制格式)的词库。如果词库格式为 「tabledb」 格式(文本格式),则 RIME 同步功能无法支持。

    如何查看自己的输入方案是哪种格式? 在输入方案的 *.schema.yaml 文件中,查找 db_class 参数。

    若输入方案的 db_classtabledb 或者 stabledb, 参考这里,修改为 userdb,即可使用 RIME 同步功能。

  • iCloud 同步使用的是苹果的文件同步功能,主要是将文件同步到云端。→ 备份用


电脑端用户输入方案的配置 db_class: userdb

如果你的输入方案 db_classuserdb,Deploy (部署) > Sync user data (同步用户数据) 后,在同步文件夹 (<sync_dir>) 中会产生 rime_ice.userdb.txt 格式的词库文件。 此文件为人类可读的 .txt 文本文件,对应用户词典文件夹$HOME/Library/Rime/rime_ice.userdb/ 里的二进制文件。 <schema_id>.userdb.txt 包含了用户的输入习惯和词库数据,会被 RIME 同步功能自动同步到其他设备上,确保在不同设备上使用相同的输入习惯和词库数据。


iPhone 「仓输入法」 中 RIME 同步功能的设置步骤

  1. 打开 Hamster app > RIME

  2. 修改「同步文件夹名称」为 iPhone

    此处填写设备名,用于用户区分不同设备。

    会在 sync_dir 下创建一个以此命名的子文件夹。

  3. 修改「同步路径」为 <sync_dir>

    点击 “选择同步路径”,iPhone 会打开文件选择界面,选择之前设置的 iCloud 同步文件夹 <sync_dir>

    <sync_dir>之前设置的所有设备共享的母同步文件夹。

    这样设置后,RIME 同步时会将词库文件同步到 <sync_dir>/iPhone 文件夹下。

    确认设置成功: 进入「输入方案」>「文件管理」功能,点击标签 「应用文件」,Rime 目录下的 installation.yaml 文件中 sync_dir 字段的值应该是 <sync_dir> 的路径,例如:

    installation_id: iPhone
    sync_dir: "/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync/"
    

    点击 “RIME 同步” 按钮,应显示 “RIME 同步中,请稍候…” 的提示,之后会显示 “同步成功” 的提示。

    同步成功后,在「仓输入法」中,「输入方案」>「文件管理」>「应用文件」会看到 rime_ice_userdb/ 文件夹,里面有二进制文件,这些文件就是用户词典文件,包含了用户的输入习惯和词库数据。

    并在同步目录(<sync-dir>/<installation_id>)下生成 rime_ice.userdb.txt,里面都是输入过的内容。

    当你同步用户数据时,rime_ice.userdb.txt 会被 RIME 同步功能自动合并同步到其他设备上,确保在不同设备上使用相同的输入习惯和词库数据。


    错误示例

    上面设置的 sync_dir 是 iCloud 同步的路径,但是按 RIME 同步,显示如下错误: “无写入权限”

    同步失败 无写入权限: "/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Documents/config_files/RimeSync"
    

    如有以上错误,重新设置路径即可。

    再次点击 “RIME 同步” 按钮,如果文件夹路径设置正确,会显示 “RIME 同步中,请稍候…” 的提示,之后会显示 “同步成功” 的提示。


mac > ios: 必须确保 iCloud 下载同步文件夹中的 *.userdb 文件到本地,才能同步到 iPhone 仓输入法进行数据同步操作。可以在 Finder 里打开 iCloud 同步文件夹,手动确认 *.userdb 文件已经下载到本地。可以使用快捷指令自动化下载 iCloud 同步文件夹中的 *.userdb 文件到本地。

快捷指令设置

  • iOS 设备打开快捷指令,点击+号新建,点击新建快捷指令,选择重新命名,输入 SyncRimeUserData
  • 点击添加操作,点击类别/文稿,选择文件夹,点击文件夹进行选择,选到 iCloud云盘/Hamster/RIME/Rime/sync/mac,点击打开
  • 继续添加操作(从底部往上滑出菜单),选择打开文件,点击默认App进行选择,选为 文件app。这一步的意义是:文件app 打开文件夹后,你可以查看要同步的文件是否已下载到本地,必要时可以手动点击下载,等到页面显示下载完成后,点击确认进入下一步。这一步的目的在于保证iCloud上的 *.userdb.txt 文档下载到本地,以便仓输入法进行数据同步操作
  • 继续添加操作(从底部往上滑出菜单),点击右上角的x,点击类别/所有操作,选择显示提醒,用默认的是否继续即可
  • 继续添加操作(从底部往上滑出菜单),点击类别/所有操作,选择打开App,点击App进行选择,选为「仓输入法」
  • 点击右下角的执行按钮测试,成功后,重新回到快捷指令,点击右上角的完成按钮进行保存

ref:


Q: MacBook 上的自定义词好像没有同步到 iPhone 上?两设备用不同 installation_id
A: 自定义短语文件 custom_phrase.txt。 因为格式为 txt,所以不会自动同步到其他设备。需要手动同步到其他设备的 Rime 用户文件夹下。


Q: 如何手动同步 custom_phrase.txt
A:

  1. 打开 Hamster app > Wi-Fi 上传方案。复制粘贴局域网地址到浏览器,
  2. 打开 Rime 文件夹
  3. 上传 custom_phrase.txt 文件。确认覆盖原始文件。

    浏览器内支持拖拽上传。

  4. 重新部署方案后生效。

自动化同步用户词典

If you don’t want to manually sync custom_phrase.txt every time, you need to use the userdb type for your input schema, and then use RIME’s built-in synchronization feature to automatically sync the user dictionary <schema-ID>.userdb.txt across devices. Here’s how to set it up:

  • 将所有平台的 installation.yaml 文件的 sync_dir 字段设定为同一个目录,比如 iCloud、Dropbox 的目录。
  • 在你输入过内容后,配置目录下会生成 <schema-id>.userdb/ 文件夹,里面是二进制的用户词典。
  • 点击「同步用户数据」后,Rime 会和配置目录下的 *.userdb/ 进行双向更新同步,并在同步目录(<sync_dir>/<installation_id>)下生成的 *.userdb.txt,里面都是输入过的用户词典文本。

    同步使用场景:

    1. 在 PC1 造词后,点击同步;
    2. 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
    3. 另一手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。

ref:


iPhone 上使用 Hamster Tips:

  • 如果使用震动反馈 + 按键音,必须授予「完全访问权限」。
  • 目前发现的 bug: iMessage 里 quote 文字回复时,无法使用 Rime 中文输入法,一直默认英文。需要换输入法才可以。

雾凇拼音

GitHub repo: https://github.com/iDvel/rime-ice

雾凇拼音: 功能演示和使用教程

安装

可以使用 /plum/ ℞ 配方管理工具,一行命令就能安装和更新雾凇拼音:

bash rime-install iDvel/rime-ice

配置文件

.
├── default.yaml          # 一些全局设置

├── rime_ice.schema.yaml  # 全拼方案
├── double_pinyin*.yaml   # 双拼方案
├── rime_ice.dict.yaml    # 挂载词库
├── cn_dicts/             # 词库目录

├── melt_eng.schema.yaml  # 英文方案,作为次翻译器挂载到拼音方案
├── melt_eng.dict.yaml    # 挂载词库
├── en_dicts/             # 词库目录

├── radical_pinyin.schema.yaml  # 部件拆字方案,作为反查挂载到拼音方案
├── radical_pinyin.dict.yaml    # 部件拆字词库

├── custom_phrase.txt    # 自定义短语
├── symbols_v.yaml       # 全拼 v 模式
├── symbols_caps_v.yaml  # 双拼 V 模式
├── opencc/              # 词语映射,Emoji
├── lua/                 # 各个 Lua 脚本

├── squirrel.yaml        # 鼠须管的前端配置文件, Mac 端使用
└── weasel.yaml          # 小狼毫的前端配置文件, Windows 端使用

输入英文

雾凇拼音已经内置了 melt_eng 翻译器,支持中英文混输。

配置文件默认如下

# rime_ice.schema.yaml

schema:
  dependencies:
    - melt_eng

engine:
  translators:
    - table_translator@melt_eng

# 主翻译器,拼音
translator:
  dictionary: rime_ice
  initial_quality: 1.1     # 拼音权重 1.1

# 次翻译器,英文
melt_eng:
  dictionary: melt_eng     # 挂载词库 melt_eng.dict.yaml
  enable_sentence: false   # 禁止造句
  enable_user_dict: false  # 禁用用户词典
  initial_quality: 1.2     # 初始权重大于拼音,数值越大,英文越靠前
  comment_format:          # 自定义提示码
    - xform/.*//           # 清空提示码

# 自定义短语: custom_phrase.txt
custom_phrase:
  dictionary: ""
  user_dict: custom_phrase  # 可以修改这里,改成自己的 txt 文件
  db_class: stabledb        # 只读数据库,无法动态调频;设为 tabledb 可以动态调频
  enable_completion: false  # 补全提示
  enable_sentence: false    # 禁止造句
  initial_quality: 99       # custom_phrase 的权重应该比 pinyin 和 melt_eng 大

因为平时英文输入较多,我对初始权重做了微调。 默认是 rime_ice:melt_eng1.2:1.1,我调换了一下权重,rime_ice:melt_eng1.1:1.2,让英文候选词更靠前一些。 自定义短语权重最高。

基础使用

  • Symbols 特殊符号、字符输入: v + 拼音首字母缩写

    # rime_ice.schema.yaml
    
    punctuator:
      symbols:
        __include: symbols_v:/symbols   # 从 symbols_v.yaml 导入配置
    

    Rime 的预设配置是以 / 前缀开头输出一系列字符,自定义的 symbols_v.yaml 修改成了 v 开头。

    比如

    • vszq 会显示数字圈 ⓪, ①, ②, ③, ④, ⑤, …
    • vzmq 会显示字母圈 ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, …
    • vzmh 会显示字母弧 ⒜, ⒝, ⒞, ⒟, ⒠, …

    具体定义见 symbols_v.yaml

    除了 v 模式,还有一个 V 模式,输入方式同上,区别在于 V 模式会输出大写的特殊符号,定义见 symbols_caps_v.yaml

    V+全拼,也可以显示 emoji 表情。具体定义见 opencc/others.txt,配置见 rime_ice_dict.yaml。 比如 V花 会显示 🌸 🌺 🌼 🌻 🌷 …

  • Unicode:大写 U 开头,如 U62fc 得到「拼」。

  • 数字、金额大写:大写 R 开头,如 R1234 得到「一千二百三十四、壹仟贰佰叁拾肆元整」。

  • 以词定字

    有时候你想输入一个单字,但这个字的拼音和其他字一样,这时候可以先输入这个字所在的词语,用 [] 选择开头或者结尾的字。例如,输入 nihao[ 选择 “你”,] 选择 “好”。

    快捷键写在了 default.yaml


FAQ

Q: 输入法为什么显示繁体?
A: 用 Ctrl + ` 或者 F4 切换输入方式。首先选择一级输入法 (如明月拼音,五笔等),进入二级菜单可选择简体繁体的切换。

Q: 如何切换全半角?
A: Ctrl + `.

Q: 如何切换中英文?
A: 初始设置 Shift 键切换中英文。→ Control+Shift+2

Q: 如何使 Rime 只负责中文,英文用系统自带的?
A: 前往 System Settings > Keyboard > Input Sources,删除 Rime 以外的输入法。之后就只剩下【鼠须管】/【Squirrel】和 【ABC】输入法了。

Q: 输入词语之后,想单独选字,如何操作?
A: 使用左右方向键移动光标,移到想要选择的字的位置,就会出现对应的单字候选。Tab 键可以切换到下一个字的拼音; Shift + Tab 切换到上一个字的拼音。


Q: 如何让括号使用半角符号
A: 修改 <sheme-ID>.custom.yaml 文件中的 punctuator 字段,例如:

patch:
  punctuator/full_shape: # 半角标点
    "(" : 
    ")" : 
  punctuator/half_shape: # 半角标点
    "(" : "("
    ")" : ")"

语法说明见上文

语法要点:

  • 如果想要一对多符号映射,可以用 [] 括起来。
  • 如果想要循环输入成对符号,可以用 pair 定义。

ref:


Q: Cannot find rime-install,错误如下

bash rime-install plum
bash: rime-install: No such file or directory

A: rime-install 不在当前目录,cd 到 plum 目录下再执行。

cd ~/plum
bash rime-install plum

或者添加环境变量

export PATH="$PATH:/Users/menghan/plum"

Q: 如何设置模糊音?
A: 修改 luna_pinyin.custom.yaml 文件中的 patch/speller/algebra 字段,重新部署后生效。例如:

patch:
  speller/algebra:
    - erase/^xx$/                         # 第一行保留
    
    # 韵母部份 纠正前后鼻音不分
    - derive/^([bpmf])eng$/$1ong/         # meng = mong, ...
    - derive/([ei])n$/$1ng/               # en => eng, in => ing
    - derive/([ei])ng$/$1n/               # eng => en, ing => in
    
    # 自动纠正一些常见的按键错误
    - 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

更多例子见 lotem/luna_pinyin.schema.yaml gist.


Q: 如何实中英混输?
A: 「MacOS 上 easy-en 目前自动配置失效不可用,必须手动添加 dependencies」操作见下文手动配置.

Update: Rime-ice 雾凇拼音已经内置了 melt_eng 翻译器。

melt_engeasy_en 差不多,在拼写规则的大小写方面有所差异。


如果想要中英混输效果,将 rime-easy-en 作为输入法的扩展,嵌入到具体输入法内。

以朙月拼音(luna_pinyin)为例,可执行以下命令:

cd ~/plum
bash rime-install BlindingDark/rime-easy-en:customize:schema=luna_pinyin
Installing for Rime frontend: rime/squirrel
Downloading package: BlindingDark/rime-easy-en 
Cloning into '/Users/menghan/plum/package/BlindingDark/easy-en'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 13 (delta 0), reused 6 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (13/13), 4.03 MiB | 8.83 MiB/s, done.

Installing recipe: BlindingDark/rime-easy-en:customize
- option: schema=luna_pinyin
Installing: easy_en.dict.yaml
Installing: easy_en.schema.yaml
Installing: easy_en.yaml

Creating directory: /Users/menghan/Library/Rime/lua
Installing: lua/easy_en.lua
Patching: luna_pinyin.custom.yaml

若想更新到最新版,则重复执行安装命令即可。


手动配置

目前暂时解决方案为直接在 luna_pinyin.schema.yaml 中配置。

缺点为更新 luna_pinyin.schema.yaml 时,会覆盖掉 easy_en 的配置。

# luna_pinyin.schema.yaml 中关于 easy_en 的配置
schema:
  dependencies:
    - easy_en

engine:
  translators:
    - table_translator@easy_en

# 英文翻译器
easy_en:
  dictionary: easy_en
  enable_sentence: false # 禁止在 luna_pinyin 中显示不在词典中的英文单词;禁止造句功能
  split_sentence: false  # 关闭连续输入增强的分词功能;功能太卡

luna_pinyin.custom.yaml 中添加如下字段:

# luna_pinyin.custom.yaml 中关于 easy_en 的配置
patch:
  __include: easy_en:/patch               # 英文辅助输入

[✓] To-do: 将配置融入到 luna_pinyin.custom.yaml 中。语法参考↩︎


「更新」: 如何在 luna_pinyin.custom.yaml 中添加 easy_en 的配置?

custom.yaml 文件中做修改的好处是不用每次更新 luna_pinyin.schema.yaml 都要重新配置 easy_en

👍 在 luna_pinyin.custom.yaml 中添加以下字段 (all-in-one solution):

patch:
  schema/dependencies/@after 0: easy_en                     # 添加英文输入法
  engine/translators/@after last: table_translator@easy_en  # 添加英文翻译器;放在列表最后
  
  # 英文翻译器配置
  easy_en:
    dictionary: easy_en
    enable_sentence: false # 禁止在 luna_pinyin 中显示不在词典中的英文单词;禁止造句功能
    split_sentence: false  # 关闭连续输入增强的分词功能;功能太卡
    initial_quality: 0     # 英文词库词频调高,数值越大,英文越靠前

权重设置规则不是很清楚。在 rime-ice 的配置文件中, melt_eng (次翻译器) 的 initial_quality 设置为 1.1, rime_ice (主翻译器) 的 initial_quality 设置为 1.2.

ref:


Q: 如何去除的多余的输入方案配置文件? 有许多未使用的输入方案的配置文件、替身,我并未在 default.custom.yaml 中开启这些方案,对我来说,他们不但没有什么用,而且还影响了快速地找到使用中的输入方案配置文件。所以怎么操作,才能去掉这些无用的配置文件?

我的 default.custom.yaml 只保留了 luna_pinyinrime_ice 两个输入方案

patch:
  schema_list:
    # 添加输入法
    - schema: luna_pinyin  # 明月拼音
    - schema: rime_ice     # 雾凇拼音

A: 多余的那些是安装时默认启用的输入方案及词典文件。手动删除就好。注意不要删除 dependencies,如 easy_en 等。不确定的就不要删除。一般输入方案有以下文件 <schema-ID>_<version>.schema.yaml<schema-ID>.dict.yaml。 比如倉頡輸入法的配置文件如下

~/Library/Rime
├── cangjie5_express.schema.yaml
├── cangjie5.schema.yaml
└── cangjie5.dict.yaml

双拼也可以删除. Double Pinyin (ZiRanMa, ABC, flyPY, MSPY, PYJJ variants)


Miscellaneous

  • 既版本 1.0.1 后,不再支持 style/horizontalstyle/vertical (原本用于设置候选词框的排列方式,在 ~/Rime/squirrel.custom.yaml中配置)

    在新版本中,横排支持改成 candidate_list_layout: linear↩︎

  • 模糊音

    具体见上文模糊音配置

  • emoji 映射

    此功能在 MacOS 有快捷键直接调用 emoji 面板,但是需要鼠标选择,还是有点麻烦。 iPhone 更麻烦,需要切换到 emoji 键盘。

    可以安装 rime-emoji 仓库。

    雾凇拼音已经内置了 emoji 词库。不用自己设置,打文字,备选框会出现 emoji 选项。

    # rime_ice.schema.yaml 默认配置文件中关于 emoji 的配置
    # Emoji
    emoji:
      option_name: emoji         # 对应 switches 中的 name
      opencc_config: emoji.json  # 选择要加载的 OpenCC 配置
      inherit_comment: false     # 在 corrector.lua 及反查中,emoji 的 comment 显示为空
    

    Rime-ice 的 emoji 映射是通过 OpenCC (Open Chinese Convert) 配置文件实现的。最初用在简体中文和繁体中文之间进行转换。 但也可以用来实现文字到 emoji 的映射。通过编辑 OpenCC 配置文件,可以定义特定的文字对应的 emoji。

    OpenCC 配置文件通常位于 ~/Library/Rime/opencc/ 目录下:

    .
    ├── emoji.json
    ├── emoji.txt
    └── others.txt
    
    • emoji.txt 该文件中包含 emoji 词库。

      如果想要添加自定义 emoji,可以编辑该文件,添加新的 emoji 词条。

    • emoji.json 该文件包含 emoji 表情的映射规则。

      OpenCC会根据这个 json 文件进行 emoji 的转换。这个文件不用改。

    • others.txt 该文件包含一些特殊词汇表的形式,还有 emoji 表情的映射规则。

      emoji 映射规则: V + 全拼,显示 emoji 表情。比如 V花 会显示 🌸 🌺 🌼 🌻 🌷 …

    注意 Syntax 与 custom_phrase.txt 不同,emoji.txt 的语法如下:

    # 每行一个词条,格式为:emoji_name <Tab> emoji_character1 <Space> emoji_character2 ...
    摄氏度→ 摄氏度␣ °C
    足球→ 足球␣ ⚽
    笑→ 笑␣ 😄␣ 😊
    

    OpenCC 配置


高阶功能

有需要再配置


Tutorials:


微信输入法

非常智障 下载两次 使用后卸载 有严重 bug 无法选词 避雷!

卸载

  1. Go to /Library/Input Methods
  2. Delete WeType.app

如果提示 “文件正在使用中,无法删除”: Open Activity Monitor, find the process named WeType, select it and click the “X” button in the top left corner to quit it. Then try deleting the app again.