

## 方案设计

```
.
├── 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  # 鼠须管的前端配置文件
└── weasel.yaml    # 小狼毫的前端配置文件
```

支持了全拼和部分双拼。

### 修改标点快符

启用了自定义短语，全拼为 `custom_phrase.txt`，双拼为 `custom_phrase_double.txt` 需要手动创建。

将 Rime 默认的「/」模式改为了「v」模式，全拼为小写 v 开头，双拼为大写 V 开头，分别在 `symbols_v.yaml` 和 `symbols_caps_v.yaml` 中定义。

支持了 Emoji 和部分词语映射，在 `opencc/` 文件夹中定义。

**Lua 设置：**

提取了一些可配置的选项出来，触发关键字及前缀都可以直接在方案里修改，不用修改 `.lua` 文件。

**以词定字**：的快捷键写在了 `default.yaml`，因为可能和方括号翻页冲突，其余的 Lua 都在方案文件中设定，参考注释即可。

**长词优先**（全拼）：默认是提升 2 个词提到第 4 个位置。

**以词定字**：默认快捷键为左右中括号 `[` `]`，分别取第一个和最后一个字。

**日期时间**：全拼的触发编码为 `rq sj xq dt ts`，双拼为 `date time week datetime timestamp`。

**农历**：全拼 `nl`，双拼 `lunar`。

在 `lua/` 中还有一些默认未启用的脚本，可自行配置。

**一些前缀功能的默认设置：**

- symbols：全拼 `v` 开头、双拼大写 `V` 开头
- 部件拆字的反查：`uU` 开头，反查时前缀会消失影响打英文所以设定为两个字母，或可改成一个非字母符号。
- 部件拆字的辅码：``` 触发。
- 计算机：`cC` 开头，前缀会消失影响打英文所以设定为两个字母，或可改成一个非字母符号。
- Unicode：大写 `U` 开头，如 `U62fc` 得到「拼」。
- 数字、金额大写：大写 `R` 开头，如 `R1234` 得到「一千二百三十四、壹仟贰佰叁拾肆元整」。
- 农历指定日期：大写 `N` 开头，如 `N20240210` 得到「二〇二四年正月初一」。

**置顶候选项：**

这段话是在解释**Rime输入法**中两种“置顶候选词”实现方式的区别，并重点说明了新方法（Lua插件）的优势。

**1. 旧方法（custom_phrase）的局限**

- **原理**：通过自定义短语功能，强行创造了一个“新词”，并给了它超高权重，所以排第一。
- **弊端（你引用的第一段）**：以“的”（编码`de`）为例，这个被置顶的“的”是**人造的副本**，不是拼音引擎原有的那个“的”。因此，当你输入“de”后打“的人”时，这个副本无法参与组词（造词），导致无法打出“的人”这类词组，只能单字。所以建议只给“d”（非完整拼音）这种无法组词的编码置顶。

**2. 新方法（pin_cand_filter.lua）的优势**

- **原理**：这个Lua脚本**不创造新词**，它只是**调整候选项的显示顺序**。你看到的“的”依然是拼音引擎自己的那个“的”。
- **好处**：因为它本身就是拼音引擎的“原装词”，所以它保留了**组词能力**。你现在可以放心地把“的”的完整拼音`de`置顶，输入`de`时选“的”，再接着输入`ren`，就能顺利打出“的人”。





### 优先级

1. **最高优先级：`{方案名}.custom.yaml`**
   这是针对**某个特定输入方案**（比如“明月拼音”`luna_pinyin.schema.yaml`）的个人补丁文件。它的修改只影响这一个方案，并且会覆盖所有全局设置。
2. **中优先级：`default.custom.yaml`**
   这是**全局**的个人补丁文件。你在这里做的任何修改，都会覆盖 `default.yaml` 中对应的全局设定。
3. **最低优先级：`default.yaml` 和 `{方案名}.schema.yaml`**
   这些是 Rime 自带的**基础配置文件**。它们是“原始模板”，通常不建议直接修改，因为软件更新时可能会被覆盖。

你之前的理解“`default.custom.yaml` 是中优先级，会覆盖 `default.yaml`”，这个**仅限于 `default.yaml` 自身的内容**。





对于某个具体的输入方案（比如 `luna_pinyin.schema.yaml`）来说：

- **方案自身的 `.custom.yaml`（最高优先级）**
- **方案自身的 `.schema.yaml`**
- **通过 `import_preset` 拉进来的 `default.yaml`（或别的文件）**

如果方案没有写 `import_preset`，那么 `default.yaml` 里的 `key_binder` 对这个方案**完全不存在**，更谈不上“覆盖”或“优先级”了。

如果你想给**所有方案**都加上同一套快捷键，且不想在每个方案里都写 `import_preset`，最省事的办法就是：

**直接修改 `default.custom.yaml` 里的 `key_binder`**。

因为 Rime 在加载**任何方案**时，都会优先加载 `default.custom.yaml` 作为全局补丁，它会强行把快捷键“塞”给所有方案，不需要你在各个方案里做**`import_preset`**任何引用操作。这是唯一一种“不写引用也能全局生效”的特例

虽然我们习惯把 `default.yaml` 叫做“全局配置”，但它在 Rime 的加载机制中，**并不是一个“所有方案自动继承”的底层模板**，而是一个**“兜底的基础设施”**。



为了让你彻底明白，请记住 Rime 加载配置时的两条铁律：

 1. `default.yaml` 管的是“输入法软件本身”，而不是“某个方案”

- `default.yaml` 里的配置分为两类：
  - **全局开关**（如 `menu/page_size` 候选词个数、`schema_list` 启用的方案列表）。这些是软件层面的设置，所有方案共享。
  - **组件定义**（如 `key_binder`、`translator` 等）。这些是“零件”的**默认参数**。
- **关键点来了**：当 Rime 启动一个具体的输入方案（比如“明月拼音”）时，它**直接去读这个方案的 `.schema.yaml` 文件**。`default.yaml` 里的 `key_binder` 并不会自动“流”进这个方案里。

 2. `import_preset` 才是“主动继承”的开关

你可以把 `default.yaml` 里的 `key_binder` 理解为一个 **“公共仓库”**。

- 如果方案里**不写** `import_preset: default`，就相当于告诉 Rime：“我不去那个公共仓库拿快捷键，我用自己的，或者我不用快捷键。”
- 如果方案里**写了** `import_preset: default`，就相当于：“请把 `default.yaml` 里定义的那套快捷键零件拿给我用。”

------



为什么这么设计？

这是为了**隔离性和灵活性**。

- 如果你希望“朙月拼音”用 `Ctrl+Shift+F` 切换繁体，“五笔”用 `Ctrl+Shift+F` 切换全/半角，这两个方案快捷键冲突了怎么办？
- 如果所有方案**自动**共用 `default.yaml` 里的快捷键，你就没法单独修改某一个方案了。

所以，Rime 的设计原则是：**“默认不给，需要你明确伸手要（`import_preset`）。”** 这给了每个方案极大的独立配置空间。



----



### 目录

- 配置目录 / 用户文件夹：
  - 鼠须管： `~/Library/Rime`
  - 小狼毫： `%APPDATA%\Rime`
- 共享目录 / 程序文件夹：
  - 鼠须管： `/Library/Input Methods/Squirrel.app/Contents/SharedSupport`
  - 小狼毫： `<安装目录>\data`

自己的配置放到配置目录里就可以。共享目录提供了一些自带的方案及各项默认配置，可以直接引用；无特殊需求，不要修改共享目录的文件。

比如 OpenCC 简繁转换的配置可以直接书写 `s2t.json`，因为共享目录里已经有相关文件了。

## 上手修改

简单来说，`default.yaml` 是入口文件，决定了一份配置使用哪些方案，可以只保留自己需要的方案。

里面还有一些特殊设定，候选词个数、方案选单、中西文切换等等，另外将一些所有方案较为通用的配置项也写在 `default` 里了，再在方案中引用。

方案文件 `rime_ice.schema.yaml`（全拼）或 `double_pinyin*.yaml`（双拼）是最主要的配置文件，所有功能的引用和实现都在方案文件中。

自定义短语、opencc、symbols 等等是引用的哪个文件、启用了什么 Lua 等等，都是在方案文件中体现的。

`melt_eng` 与 `radical_pinyin` 没有作为单独的输入方案，而是作为辅助功能挂载到拼音方案中，以支持在拼音方案下输入英文和拼字。

因为中英文的词库文件较多，`rime_ice.dict.yaml` 与 `melt_eng.dict.yaml` 也是作为入口文件，将具体词库放到了文件夹中，让配置目录清爽一些。

无论您是折腾能手还是只想一键使用，都建议至少大概翻看一下 `default.yaml` 和所使用的方案文件，可以了解到所有功能。



## 配置覆写速查

如果你是通过搜索或知识库检索来到这里，可以先看这张表。Rime 的 custom 文件都使用 `patch:` 写法，但要先判断自己要改的是“客户端外观”还是“输入方案行为”。

| 想修改的问题                         | 推荐修改文件                             | 常见 patch 路径或关键词                                      |
| :----------------------------------- | :--------------------------------------- | :----------------------------------------------------------- |
| 鼠须管外观、macOS 皮肤、候选栏方向   | `squirrel.custom.yaml`                   | `style/candidate_list_layout`、`style/horizontal`、`style/color_scheme`、`style/color_scheme_dark`、`font_face`、`font_point` |
| 小狼毫外观、Windows 皮肤、横向候选栏 | `weasel.custom.yaml`                     | `style/candidate_list_layout`、`style/horizontal`、`style/color_scheme`、`style/color_scheme_dark` |
| 全局方案列表、默认激活方案           | `default.custom.yaml`                    | `schema_list`                                                |
| 薄荷全拼方案行为                     | `rime_mint.custom.yaml`                  | `speller/algebra`、`translator/dictionary`、`recognizer/patterns`、`engine/filters`、`engine/translators` |
| 小鹤双拼方案行为                     | `double_pinyin_flypy.custom.yaml`        | `speller/algebra`、`aux_code/trigger_word`、`translator/preedit_format`、`menu/page_size` |
| 薄荷全拼 + 小鹤混输                  | `rime_mint_flypy.custom.yaml`            | `speller/algebra`、`translator/preedit_format`、`menu/page_size` |
| 候选词个数、翻页快捷键、Emoji 快捷键 | 对应方案的 `.custom.yaml`                | `menu/page_size`、`key_binder/bindings`、`key_binder/bindings/@next` |
| 模糊拼音、简拼、自动纠错规则         | 对应方案的 `.custom.yaml`                | `speller/algebra`、`speller/algebra/+`                       |
| 拼音手动分词、分隔符                 | 对应方案的 `.custom.yaml`                | `speller/delimiter`                                          |
| 自定义词库、扩展词库                 | 对应方案的 `.custom.yaml` + `.dict.yaml` | `translator/dictionary`、`import_tables`                     |
| 拼音串最大长度、过长输入截断         | 对应方案的 `.custom.yaml`                | `codeLengthLimit_processor`                                  |
| 符号输入、半角标点、自定义 `/` 符号  | 对应方案的 `.custom.yaml`                | `punctuator/symbols`、`punctuator/half_shape`、`recognizer/patterns/punct` |

## Rime的个性配置文件

Rime的配置总体分为两种：

- 输入法的应用配置: 一般是设置客户端的外观，每个客户端可能有所不一样。比如: macOS(鼠须管) 和 Windows(小狼毫) 上设置输入法的外观和纵向输入等。
- 输入法方案配置: 设置输入法的方案内部的配置；比如: 设置在半角的情况下输入句号的形式、输入法翻页快捷键等。

一般来讲，如果是想自定义外观展示的，那么就设置「输入法的应用配置」，macOS上就是`squirrel.yaml`和`squirrel.custom.yaml`；而Windows上就是`weasel.yaml`和`weasel.custom.yaml`。

如果想覆写输入的内容和方式，那么就是设置「输入法方案配置」，这个又分为「全局输入设置(default)」和「输入方案设置(scheme)」；同样，作为设置也有`带custom的自定义文件`和不带`custom的schema文件`。

> 为什么都有`带custom`和`不带custom`的两种呢？
>
> > 其实，**不带custom的是配置的定制，用于实现配置**；**带custom的则是配置的覆写，用于覆写不带custom的某些配置；其他内容继承不带custom配置**。







RIME 的配置文件、输入方案、符号集合及词库文件，均为特定格式的文本文档。分别为：

> - 〔全局设定〕 `default.yaml`
> - 〔发行版设定〕 `weasel.yaml`
> - 〔预设输入方案〕 `<方案标识>.schema.yaml`

此外，还有记录用户输入习惯的文件：

> - ※〔用户词典〕 `<词典名>.userdb/` 或 `<词典名>.userdb.kct`

由于随着软件的更新，这三个预设配置文档有可能被新版文件所覆盖。因此，RIME 引入了一种类似于「补丁」的定制方式。如上的三个「预设配置文档」，分别对应者如下三个「用户配置文档」：

> - ※〔用户对全局设定的定制信息〕 `default.custom.yaml` 用于设置输入法方案、切换输入法快捷键、中英文切换、翻页等等。
> - ※〔用户对发行版设定的定制信息〕 `weasel.custom.yaml` 用于设置托盘图标、指定软件默认英文输入、候选词横竖排列、界面布局、配色方案等等。
> - ※〔用户对预设输入方案的定制信息〕 `<方案标识>.custom.yaml` 用于设置具体的输入方案。



所有对如上三个 `custom` 配置文档的修改，最终都会以「补丁」的方式映射汇入到 `default.yaml` 、`weasel.yaml`、和 `<方案标识>.schema.yaml` 三个文本文档中，经由重新部署而生效。

修改如上配置文档，请配合你所习惯使用的超级文本编辑器（例如 Emeditor），确保所配置的所有文本文档，均以 `UTF-8 无签名`编码，使用 `LF 换行符` 。并在文档中，合理使用换行符、空格及制表符，以确保配置代码对齐。

注意：如上标注了星号 ※ 的文件，均含有用户定制信息，请注意备份。

最后，在编辑配置文档时，通常采用「注释」的方式，来对某一项具体功能或某一条具体配置进行「开关」。例如：



```php
key_binder:
  select_first_character: "bracketleft" # lua 选词快捷键，左方括号选前字，此行代表反注释开启
  # select_last_character: "bracketright" # lua 选词快捷键，右方括号选后字，此行代表注释关闭
```

如上，是「以词定字」功能的语句。第二条句首的 `#`，代表该条配置代码被「注释」成说明文字，不再生效。亦即该条配置代码所对应的功能被「关闭」。反之，第一条，则代表配置代码正常生效。亦即所对应的功能被「开启」。

利用此方法，注释与反注释配置文件中的相关代码语句，开启和关闭相关功能，以此达到灵活定制的效果。



此外，别忘了不同外观设置互相冲突时：

custom 优先级高于本身设置（因为 Rime 认为这是个人定制设置）；

具体方案的设置高于通用设置（因为 Rime 认为你为具体方案定制了特殊情况）

### Tab 与空格

注意编辑器的缩进配置。

Rime 的 YAML 配置文件需要严格的缩进，使用两个空格缩进，不要用 Tab。

词库文件的词条是用 Tab 分割的：

```
拼音	pin yin 1234
拼音<Tab>pin<Space>yin<Tab>1234
```

对于普通用户来说，推荐使用 VSCode 这种能配置和区分空格与 Tab 的编辑器（而不是记事本），同时使用等宽字体。





### 其他杂项小说明

完成部署后，首先在 `default.yaml` 中查看呼出方案选单的快捷键。

`build/` 目录是部署后自动生成的，不要修改，出错时可以看看里面生成的是否正确。

首次部署较慢，主要是拼音方案词库很大，如果下次部署前没有修改词库，就会很快完成部署。

`translator/enable_user_dict` 是默认开启的，即记录用户输入内容。

用户词典类型 `translator/db_class` 的值默认为 `userdb`，即二进制文件，输入过的内容会记录在 `*.userdb/` 文件夹中，只有在同步后才能在同步目录看到人类可读的用户词典；另一个值是 `tabledb`，会直接在配置目录生成一个人类可读的 txt 文件。如有多平台同步需求，使用默认值 `userdb`。





### 🗺️ 查找路径的两步规则





在小狼毫中，`__include` 指令查找预设的路径规则，结合了**约定路径**和**显式路径**两种方式，可以看作是“混合模式”。

这套规则的核心是`<文件名>:/<节点路径>`的定位语法。查找过程分为两步：

1. **定位文件**：Rime 会在两个固定的“约定路径”中查找你指定的文件。
   - **系统预设文件夹**：即小狼毫的安装目录，如 `...\Weasel\data\`，存放着 `default.yaml`、`weasel.yaml` 等基础预设文件。
   - **用户配置文件夹**：即你的用户目录，通常是 `%AppData%\Rime`。这里存放着你的个性化配置（如 `weasel.custom.yaml`）和自定义的预设文件。
2. **定位节点**：在找到文件后，再根据`:/`后面的路径，在该文件内部定位到具体的YAML节点

**实际例子解析**

我们通过几个例子来看这种混合模式是如何工作的。



```
# 例1：只写节点名 —— 约定路径
my_setting:
  __include: local/node
# 这会在当前文件内查找 'local/node' 这个节点[citation:1][citation:5]

# 例2：指定文件名 + 节点 —— 混合模式 (在约定路径中查找文件)
my_setting:
  __include: weasel_style:/style
# Rime 会在系统预设文件夹和你的用户文件夹中查找 'weasel_style.yaml' 这个文件[citation:1][citation:4]

# 例3：写完整文件名 + 节点 —— 混合模式
my_setting:
  __include: weasel_style.yaml:/style
# 效果同上，.yaml 扩展名是可选的[citation:1]

# 例4：引用整个文件 —— 指定根节点
my_setting:
  __include: my_preset.yaml:/
# 这会将 my_preset.yaml 文件的全部内容包含进来[citation:1][citation:4]
```



### 配置的引用

Rime 的配置可以很灵活复杂，比如设置一个快捷键：

- 可以在方案文件 `xxx.schema.yaml` 中设定；
- 也可以在方案的补丁文件 `xxx.custom.yaml` 中设定；
- 也可以写在 `default.yaml` 或 `defaut.custom.yaml` 中，再在方案中引用；
- 也可以额外创建一个 YAML 文件，再在方案中中引用。

比如我想让所有方案共用同一套快捷键，不用写很多份。写在 `default` 中就比较合适，然后再在多个方案中进行引用：

```yaml
# 1. 在 default.yaml 或 default.custom.yaml 中配置
key_binder:
  bindings:
    # ... 相关快捷键配置

##############################

# 2. 在多个方案 xxx.schema.yaml 或 xxx.custom.yaml 中引用
key_binder:
  import_preset: default # 从 default 继承快捷键的相关配置
```

`import_preset` 是导入成套的配置。

`__include` 是在当前位置包含另一 YAML 节点的内容。

具体用法参考官方 wiki。

下面是一个典型的示例：

```yaml
# 方案文件 xxx.schema.yaml
punctuator:
  # 可以用以下任何方式搞定：

  # __include: punctuation:/  # 从共享目录引入预设的 punctuation.yaml

  # import_preset: symbols    # 从共享目录引入预设的 symbols.yaml

  full_shape:
    __include: default:/punctuator/full_shape  # 从 default.yaml 导入配置
  half_shape:
    __include: default:/punctuator/half_shape  # 从 default.yaml 导入配置
  symbols:
    __include: symbols_v:/symbols              # 从 symbols_v.yaml 导入配置
  
  # 也可以直接在这里配置：
  # full_shape:
    # ...
  # half_shape:
    # ...
  # symbols:
    # ...
```



 **`xxx.custom.yaml` 的本质是“补丁（Patch）”，不是“引用”**

- **正确**。`xxx.custom.yaml` 文件的设计目的就是**对同名 `xxx.schema.yaml` 的增量修改**。它的作用不是重新定义整个方案，而是像一个“修改清单”，只包含你想要改变的那一小部分内容。
- 所以，当一个方案被加载时，Rime 会**合并**这两个文件：以 `xxx.schema.yaml` 为基础，然后将 `xxx.custom.yaml` 中的设定覆盖上去，形成最终方案。

**2. “并不存在 schema.yaml 引用 default.yaml 这一说”**

- **更精确地说，是“直接引用”极少用，而且你通常不需要这么做**。
- 确实，在 `schema.yaml` 里通过 `import_preset: default` 去引用全局配置是一种**可行但非主流**的做法。它主要用在你想“创建一套全新的、基于 default 但又有重大修改的方案”这种高度定制场景。对日常使用来说，这完全不是必需的，而且会让配置关系变得复杂。

**3. “一个方案最终生效的配置 = 方案本身的 .schema.yaml + 该方案的 .custom.yaml 补丁”**

- **完全正确**。这正是 Rime 个人定制最核心和安全的逻辑。这套“补丁”机制，加上 `default.custom.yaml` 这个全局补丁，共同构成了 Rime 的配置体系：
  - **全局补丁**：`default.custom.yaml` 对所有方案生效。
  - **方案补丁**：`xxx.custom.yaml` 只对指定方案生效。
  - **最终结果**：`default.yaml` 的全局设定，会被 `default.custom.yaml` 覆盖；`xxx.schema.yaml` 的设定，会被 `xxx.custom.yaml` 覆盖。而 `xxx.custom.yaml` 的优先级高于一切。



 如何正确实现“所有方案共用快捷键”？
如果你想所有方案都用同一套快捷键，且只在 default 里写一份，最干净的做法是这样的：

第一步：在 default.yaml 里定义好快捷键模板

```yaml
default.yaml

my_shared_key_bindings:   # 注意：这里不要叫 key_binder，换个名字当模板

  bindings:

{ when: composing, accept: Control+Shift+1, toggle: ascii_mode 

}# ... 你的其他快捷键
```







第二步：在你需要的方案（比如 luna_pinyin.custom.yaml）里引用这个模板

```yaml
luna_pinyin.custom.yaml

patch:
  key_binder:
    __include: my_shared_key_bindings   # 把 default 里的模板拿过来用

```



为什么要这样？
如果直接在 luna_pinyin.custom.yaml 里写 import_preset: default，它会去继承 default.yaml 里 现有的 key_binder 配置。但如果 default.yaml 里没有 key_binder 这一项，或者内容不完整，继承就会失效。



### 以 patch 的方式打补丁

文件名为 `xxx.custom.yaml`，内容以 `patch:` 开头的，是补丁文件，**注意缩进**，可以对原配置进行覆盖和追加。

- 方案 `xxx.schema.yaml` 的补丁文件是 `xxx.custom.yaml`
- `default.yaml` `squirrel.yaml` 就是把结尾的 `.yaml` 改成 `.custom.yaml`

具体语法参考官方 wiki：[定製指南](https://github.com/rime/home/wiki/CustomizationGuide#定製指南)

```yaml
patch:
  "一级设定项/二级设定项/三级设定项": 新的设定值
  "另一个设定项": 新的设定值
  "再一个设定项": 新的设定值
  "含列表的设定项/@n": 列表第n个元素新的设定值，从0开始计数
  "含列表的设定项/@last": 列表最后一个元素新的设定值
  "含列表的设定项/@before 0": 在列表第一个元素之前插入新的设定值（不建议在补靪中使用）
  "含列表的设定项/@after last": 在列表最后一个元素之后插入新的设定值（不建议在补靪中使用）
  "含列表的设定项/@next": 在列表最后一个元素之后插入新的设定值（不建议在补靪中使用）
  "含列表的设定项/+": 与列表合并的设定值（必须为列表）
  "含字典的设定项/+": 与字典合并的设定值（必须为字典，注意YAML字典的无序性）
```

patch 时支持用 `/` 来分隔节点，打补丁时可以这样写（比如有如下文件 `rime_ice.custom.yaml`）：

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

但是非补丁的文件只能展开来写（比如 `rime_ice.schema.yaml`）：

```yaml
a:
  b: value
c:
  d:
    e: value
```



### patch 写法速查

`custom.yaml` 里通常只有一个顶层 `patch:`。如果要同时修改多个配置，请把它们都放到同一个 `patch:` 下，不要写多个 `patch:`。

| 目的               | 写法                                 | 说明                                     |
| :----------------- | :----------------------------------- | :--------------------------------------- |
| 覆写一个值         | `"menu/page_size": 9`                | 直接替换指定路径的值                     |
| 覆写整个列表       | `speller/algebra: [...]`             | 用你的列表替换原列表                     |
| 追加到列表末尾     | `"speller/algebra/+": [...]`         | 保留原列表，并把新规则追加到末尾         |
| 追加一个列表项     | `"key_binder/bindings/@next": {...}` | 常用于新增快捷键                         |
| 修改最后一个列表项 | `"switches/@last": {...}`            | 常用于给 switches 追加或调整最后一个开关 |
| 修改含 `/` 的键名  | `"punctuator/symbols//email": [...]` | 键名本身含 `/` 时需要双斜杠转义          |

推荐使用带引号的路径写法，例如 `"style/candidate_list_layout": linear`。不要轻易写成嵌套 map；如果只写 `style:` 再放一个子项，可能会把 `style` 下面其他配置整体清空。



#### 几个打补丁的示例

```yaml
# 以 patch: 开头，后面的内容都需要缩进
patch:

  ##### 修改单项
  # 正确 ✅ 这种方式只覆盖 Shift_L，不影响其他选项
  ascii_composer/switch_key/Shift_L: commit_code
  
  # 错误 ❌ 这样导致 switch_key 下将只有 Shift_L 一个选项
  ascii_composer/switch_key:
    Shift_L: commit_code
  
  ##### 如果有较多修改项，可以直接全部复制过来再修改
  ascii_composer:
    good_old_caps_lock: false
    switch_key:
      Caps_Lock: commit_code
      Shift_L: commit_code
      Shift_R: noop
      Control_L: noop
      Control_R: noop

  ##### 结尾的 /+ 表示在原基础上追加
  # 保留已有的快捷键，追加一个逗号句号翻页
  key_binder/bindings/+:
    - { when: paging, accept: comma, send: Page_Up }
    - { when: has_menu, accept: period, send: Page_Down }
```

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

## 雾凇拼音的输入体验

日期时间输入
输入「日期」的拼音缩写「rq」，即可得到多种格式的日期：


同理，输入「时间」的拼音缩写「sj」，即可得到两种格式的时间（时分，或时分秒）：

拼音音调、修饰符字母输入
小学语文老师在做教案时，常常需要输入带声调的汉语拼音；有的小语种学习者（如西班牙语、法语）也可能需要临时键入带有修饰符的字母（如「õ」）。有了雾凇拼音，你可以轻而易举地输入这些字母，无须借助第三方工具。

在中文输入模式下，你只需先键入「v」，然后键入单韵母（a、o、e、i、u），即可得到带音调的韵母，以及其他带修饰符的字母：

注意，韵母「ü」也在「vu」下。





## 优化技巧：Shift 切换中英文的问题

主流的输入法，例如微软拼音、搜狗，可以敲 Shift 键来切换中英文输入；且如果此时正在输入拼音，则按一次 Shift 键会直接将拼音上屏。

然而小狼毫默认的设置让人迷惑：左 Shift 键只切换为英文，右 Shift 键直接上屏中文。如果你习惯了主流输入法的 Shift 键模式，那么这会非常影响输入效率，尤其是对于习惯使用右 Shift 键切换中英文的用户（比如我）来说，更是麻烦。

修改 RIME 的配置文件，将我们熟悉的操作方式带回来。

> **注意：**为防止编辑出错导致 RIME 无法读取配置文件，你需要先学习 YAML。

- **第一步，**右击任务栏上的 RIME 图标，选择「用户文件夹」，打开配置文件目录。
- **第二步，**打开`default.custom.yaml`文件，在`patch`字段添加以下配置代码（注意每一行之前的空格缩进）：

代码块复制

```null
  # 启用Shift上屏英文并进行中英文切换
  "ascii_composer/switch_key/Shift_L": commit_code
  "ascii_composer/switch_key/Shift_R": commit_code
```

- 添加完成后的样子类似于这样（以我自己的配置为例，仅供参考，请勿照搬所有内容）：

代码块复制

```null
# ...前面的内容省略...
patch:
  schema_list:
    - {schema: luna_pinyin}
    - {schema: luna_pinyin_simp}
    - {schema: luna_pinyin_fluency}
    - {schema: rime_ice}
  "menu/page_size": 10
  # 启用Shift上屏英文并进行中英文切换
  "ascii_composer/switch_key/Shift_L": commit_code
  "ascii_composer/switch_key/Shift_R": commit_code
```

- **第三步，**保存文件，然后右击任务栏 RIME 图标，选择「重新部署」，稍后即可生效。

## **手动修改文件夹权限**

这个方法是通过Windows的文件夹属性，直接赋予你的账户对该目录的“完全控制”权限，这样就能绕过“访问被拒绝”的问题了。

1. **找到目标文件夹**：打开文件资源管理器，导航到 `F:\RIME\weasel-0.17.4` 文件夹。
2. **打开属性窗口**：在 `weasel-0.17.4` 文件夹上**右键点击**，选择最下方的 **“属性”**。
3. **进入安全设置**：在弹出的属性窗口中，切换到 **“安全”** 选项卡。
4. **编辑权限**：在“安全”选项卡中间偏下的位置，点击 **“高级”** 按钮。
5. **更改所有者（关键步骤）**：
   - 在“高级安全设置”窗口顶部的“所有者”一栏旁边，点击 **“更改”**。
   - 在弹出的“选择用户或组”窗口中，点击 **“高级”**，然后点击 **“立即查找”**。
   - 在搜索结果列表中，找到你的当前登录用户名（通常是 `Lenovo`），**选中它**，然后点击“确定”，再点击“确定”回到“高级安全设置”窗口。
   - 在“高级安全设置”窗口中，**勾选**“替换子容器和对象的所有者”复选框，然后点击 **“应用”**。
6. **赋予完全控制权限**：
   - 在“高级安全设置”窗口的“权限条目”列表中，点击 **“添加”**。
   - 点击“选择主体”，用同样的方法（高级→立即查找）找到并选中你的用户名 `Lenovo`，点击确定。
   - 在下方的“基本权限”中，**勾选“完全控制”**，然后点击“确定”。
7. **应用并确认**：回到“高级安全设置”窗口，点击 **“应用”**，然后一路点击“确定”关闭所有属性窗口。

完成以上步骤后，你就拥有了对该文件夹的完全管理权限。**然后再次以管理员身份运行命令提示符，执行我刚才给你的那条 `copy` 命令**，这次应该就能成功替换了。



## 卸载模型

###  第一步：卸载现有语法模型

#### 1. 删除模型文件

打开你的用户目录 `F:\RIME_Profile`，找到并删除以下文件（如果存在）：

- `wanxiang-lts-zh-hans.gram`（这是模型本体，通常很大，几百MB）
- 任何其他以 `.gram` 结尾的文件

#### 2. 清理配置文件中的相关条目

在 `F:\RIME_Profile` 目录下，找到 `rime_ice.custom.yaml` 文件，用记事本打开，**删除**或**注释掉**（在行首加 `#`）与语法模型相关的配置内容。

需要删除的部分通常包括：

yaml

```
patch:
  grammar:
    language: wanxiang-lts-zh-hans
  translator:
    contextual_suggestions: true
    max_homophones: 7
    max_homographs: 7
  alternator:
    collocation_max_length: 5
    collocation_min_length: 2
```



> ⚠️ 注意：只删除上面这些与 `grammar` 相关的块，**不要删除** `rime_ice.custom.yaml` 文件本身，也不要动其他配置（比如双拼设置等）。

#### 3. 重新部署

右键点击任务栏小狼毫图标，选择 **“重新部署”**。这时模型就被彻底移除了。

**需要指定**。因为你已经将Rime的用户目录改为了 `F:\RIME_Profile`，而plum默认会安装到系统默认路径（如 `C:\Users\你的用户名\AppData\Roaming\Rime`）。如果不指定，这些额外配置（如双拼方案、语法模型）就会装错地方，导致无法使用。

因此，你需要在执行这些命令时，**每次都加上 `rime_dir="F:/RIME_Profile"`** 前缀，以确保它们安装到你的自定义目录中。



----



## 正确的命令格式

在Git Bash中，依次执行以下命令：

**1. 先进入plum目录（只需执行一次）**



```
cd ~/plum
```

`rime_dir` 参数指定的是**用户配置目录**（即存放所有 `.yaml` 方案文件、词库文件的地方），而不是**程序安装目录**。

**安装rime-ice**

`rime_dir="F:/RIME_Profile" bash rime-install iDvel/rime-ice`

**安装双拼方案配置**

```
rime_dir="F:/RIME_Profile" bash rime-install iDvel/rime-ice:others/recipes/config:schema=double_pinyin_flypy
```



这条命令会为你的小鹤双拼（flypy）方案，安装或更新配套的定制配置。

**安装万象语法模型**

bash

```
rime_dir="F:/RIME_Profile" bash rime-install iDvel/rime-ice:others/recipes/grammar:schema=rime_ice
```



这条命令会为雾凇拼音方案安装语法模型，以提升输入准确率。

------

### 🔄 安装完成后务必重新部署

安装成功后，**必须重新部署**才能使新配置生效：

1. 右键点击任务栏右下角的小狼毫图标。
2. 选择 **“重新部署”**。
3. 等待几秒钟，部署完成后即可正常使用。

------

### 💡 一个更省力的技巧

如果你觉得每次都要写一长串 `rime_dir="F:/RIME_Profile"` 太麻烦，可以在执行 `rime-install` 之前，先用 `export` 命令设置一次环境变量。这样在当前终端会话中，后续所有命令都会自动使用这个目录：

bash

```
cd ~/plum
export rime_dir="F:/RIME_Profile"
bash rime-install iDvel/rime-ice:others/recipes/config:schema=double_pinyin_flypy
bash rime-install iDvel/rime-ice:others/recipes/grammar:schema=rime_ice
```



这样更简洁，不容易输错。需要注意的是，这个设置只在当前Git Bash窗口有效，关掉窗口后下次需要重新设置。



## 退回版本

自动获取RIME存储的版本，但是会覆盖Profile，请务必备份。

## 卸载

卸载已经安装的 `rime-ice`（雾凇拼音）配置很简单。由于它本质上是一堆配置文件的集合，而不是一个需要运行卸载程序的软件，所以**删除文件和禁用方案**两步就能搞定。

### 🗑️ 第一步：删除配置文件

因为你之前把用户目录设置在了 `F:\RIME_Profile`，所以核心操作就是清理这个文件夹。

1. 打开你的Rime用户文件夹：`F:\RIME_Profile`。
2. 找到所有与 `rime-ice` 相关的文件。通常，这些文件会以 `rime_ice` 作为名字的开头，比如：
   - `rime_ice.schema.yaml` （方案定义文件）
   - `rime_ice.dict.yaml` （词库文件）
   - 以及其他任何包含 `rime_ice` 或 `ice` 字样的 `.yaml` 文件。
3. 将这些文件**直接删除**即可。这些文件都是独立的，手动删除就能彻底移除这个配置。

> 如果你之前还通过 plum 工具安装过其他配方，它们可能也在这里留下了配置文件。如果想彻底清理，可以一并删除。

### ⚙️ 第二步：在输入法设置中禁用它

为了确保这个方案不再出现在你的输入法切换列表中，需要在Rime的全局设置里把它去掉。

1. 在你的用户文件夹 `F:\RIME_Profile` 里，找到 `default.custom.yaml` 文件，用记事本之类的文本编辑器打开它。
2. 在 `patch:` 下面的 `schema_list:` 列表中，找到包含 `rime_ice` 的那一行，把它整行**删除**或**注释掉**（在该行最前面加一个 `#` 号）。
   - 修改前，列表里可能有一行是 `- schema: rime_ice`。
   - 修改后，那行就不见了，或者变成了 `# - schema: rime_ice`。
3. 保存文件并关闭编辑器。

### 🔄 最后，让改动生效

右键点击屏幕右下角任务栏上的小狼毫图标，选择 **“重新部署”**。等待几秒钟，部署完成后，`rime-ice` 方案就从你的输入法里彻底移除了



## Git&plum管理





1. **没有仓库也没有plum**

您如果熟悉 git 常用操作，可以使用 git clone 命令将本仓库克隆到对应前端的用户目录。由于本库提交历史较多且更改频繁，添加 `--depth` 参数可以显著减少传输体积。

```
git clone https://github.com/iDvel/rime-ice.git Rime --depth 1
Rime：下载后保存在本地的文件夹名字。也就是说，执行后会在当前目录下创建一个名为 Rime 的文件夹，里面放着所有配置。

--depth 1：只下载最新的那一次提交记录，而不是整个漫长的修改历史。这样下载速度更快、文件体积更小。

注意：这里的 Rime 就是你之前用到的用户目录 F:\RIME_Profile，你需要把命令中的 Rime 改成你的实际路径。更常见的做法是，直接在你的用户目录下打开命令行，然后执行这条命令，它会自动创建一个叫 Rime 的文件夹。
# 更新
cd F:/RIME_Profile
git pull
```



通过 checkout 命令，您也可以实现更新部分文件的效果。

**2.已经有仓库了，但是没有git**

你已经把雾凇拼音（`rime-ice`）的配置文件放到了 `F:\RIME_Profile`，现在想用 `git` 来管理它，方便以后更新。这个想法很好，而且**不需要重新下载**，只需把现有文件夹“初始化”成一个 `git` 仓库，再关联到远程仓库就可以了。

### 🔧 操作步骤（在你现有的 `F:\RIME_Profile` 文件夹上操作）

请按顺序在命令行（在 `F:\RIME_Profile` 目录下）执行以下命令：

1. **初始化 Git 仓库**
   这个命令会在当前文件夹创建一个隐藏的 `.git` 文件夹，让它变成 Git 可以管理的仓库。

   bash

   ```
   git init
   ```

   

2. **关联远程仓库**
   告诉 Git，你的本地仓库对应的是哪个远程地址。

   bash

   ```
   git remote add origin https://github.com/iDvel/rime-ice.git
   ```

   

3. **获取远程仓库信息**
   从 GitHub 拉取最新的文件列表，但先不合并。这一步会告诉你，你的本地文件和远程仓库相比，有哪些差异。

   bash

   ```
   git fetch
   ```

   

4. **重置并拉取最新内容**
   这一步会把你的本地文件**强制同步**成远程仓库的最新版本。因为雾凇拼音的配置持续更新，执行这一步后，你原来安装的配置就会被替换成官方的最新版。

   bash

   ```
   git reset --hard origin/master
   ```

   

   > ⚠️ 注意：如果 `origin/master` 提示不存在，可以试试 `origin/main`。GitHub 默认主分支名已从 `master` 改为 `main`。

### ✅ 完成后的效果

执行完这几步后：

1. `F:\RIME_Profile` 目录下的所有文件，都变成了 `rime-ice` 仓库最新版的内容（你之前手动复制的文件会被覆盖）。
2. 以后你要更新时，只需要在 `F:\RIME_Profile` 目录下执行 `git pull` 就行了，非常方便。

### ⚠️ 一个重要提醒

**请先备份你的个人词库和自定义配置！** 因为 `git reset --hard` 命令会**强制覆盖**当前文件夹里的所有文件。如果你之前在 `F:\RIME_Profile` 里做过个性化修改，或者积累了自己的用户词库（如 `.userdb` 文件夹），请先备份它们，以免丢失。



3.用plum管理

```
cd ~/plum
rime_dir="F:/RIME_Profile" bash rime-install iDvel/rime-ice
```

## 反查是什么？

**反查**，简单说就是**用你会的输入法，查你不会打的字的编码**。

------

### 一、用场景来理解

假设你用 **拼音** 打字，但遇到一个字你不会读，比如 **「龘」**（dá，三条龙）。

- **正向查**（正常打字）：你知道读音 `da` → 输入 `da` → 候选里找到「龘」
- **反查**（逆向查找）：你不会读，但你会用**仓颉/五笔/笔画** → 用这些方式输入编码 → 系统**反查**出这个字的**读音/拼音**，顺便告诉你这个字怎么打

**反查的本质**：用**一种编码**去查询**另一种编码**，帮你"翻译"出你想要的字的输入方式。

------

### 二、Rime 里的反查具体怎么用？

以你前面看到的 `cangjie6.schema.yaml` 配置为例：

yaml

```
recognizer:
  patterns:
    reverse_lookup: "`[a-z]*;?$"          # 反查统一入口：反引号 `
    pinyin_lookup: "`P[a-z]*;?$"          # 用拼音反查
    jyutping_lookup: "`J[a-z]*;?$"        # 用粤拼反查
```



yaml

```
engine:
  translators:
    - reverse_lookup_translator           # 反查翻译器
  filters:
    - reverse_lookup_filter@pinyin_reverse_lookup   # 反查过滤器
```



**实际操作是这样的**：

| 你会的输入法                     | 操作                                                         | 结果 |
| :------------------------------- | :----------------------------------------------------------- | :--- |
| 你用的是**仓颉**，但不会读「龘」 | 输入 ``Pda` | 候选显示「龘」，并**提示**这个字的仓颉编码是 `YRT'YRT'YRT` \| |      |
| 你用的是**拼音**，但不会写「龘」 | 输入 ``YRTYRTYRT`（仓颉码） | 候选显示「龘」，并**提示**读音 `da` \| |      |

> 实际上在 cangjie6 配置里，反查前缀是 ```，用 `P` 表示拼音反查，`J` 表示粤拼反查。

------

### 三、反查的两种实现方式

Rime 文档里提到了两种反查方式：

| 方式                                      | 说明                                         | 特点                                  |
| :---------------------------------------- | :------------------------------------------- | :------------------------------------ |
| **`reverse_lookup_translator`**（翻译器） | 独立的翻译器，在 `engine/translators` 中配置 | Rime 1.0 之前的老方式                 |
| **`reverse_lookup_filter`**（过滤器）     | 挂在现有翻译器上，不影响主翻译器工作         | Rime 1.0 之后推荐的新方式，**更灵活** |

配置中同时出现两者是**兼容写法**，新方式优先。

------

### 四、反查的典型用途

| 场景             | 你用的方案 | 你想查的信息                  |
| :--------------- | :--------- | :---------------------------- |
| 拼音用户查字形码 | 拼音       | 想知道某个字用仓颉/五笔怎么拆 |
| 形码用户查读音   | 仓颉/五笔  | 想知道某个字怎么读            |
| 方言输入         | 普通话     | 想知道某个字的粤拼/注音       |
| 学习用途         | 任何方案   | 一边打字一边学习另一种编码    |

------

### 五、生活类比

**反查就像「字典的部首检字表」**：

- 正常查字典用**拼音检字**（正向）
- 你不会读，就用**部首笔画**去翻（反向查找）
- 翻到了，就能看到这个字的**拼音**和**解释**

反查就是你输入"部首笔画"，字典告诉你"读音和位置"。



# 万象模型在rime_ice.custom.yaml中的使用方式



## 第一部分：普通 `patch`（常规补丁）

yaml

```
patch:
  translator/enable_word_completion: false
  translator/spelling_hints: 0
  translator/always_show_comments: false
  translator/max_homophones: 4
```



这是标准的 Rime `patch` 写法，直接覆盖 `translator` 下的配置项。逐项解释：

| 配置项                          | 含义                                               | 效果                                                         |
| :------------------------------ | :------------------------------------------------- | :----------------------------------------------------------- |
| `enable_word_completion: false` | **关闭逐键提示**（也叫“提前显示未输入完整的候选”） | 当你只输入了编码的一部分（比如仓颉只打了前两码），**不会**提前显示可能匹配的字。只有输入完整编码后才显示候选。设为 `true` 则边打边提示。 |
| `spelling_hints: 0`             | **拼写提示数量**（拼音方案特有）                   | 在候选词旁边显示**完整拼音**的标注。`0` 表示**完全不显示**任何拼音提示。如果设为 `5`，则前5个候选会标注完整拼音。 |
| `always_show_comments: false`   | **始终显示编码注释**                               | 候选词右边的提示信息（比如仓颉码、拼音等）。`false` 表示只在必要时显示（比如反查结果），`true` 则表示**所有候选都显示**编码注释。 |
| `max_homophones: 4`             | **最大同音候选数量**                               | 当有大量同音字时（比如拼音输入），最多只显示 **4 个**同音候选项。超过4个的其他同音字会被截断，不再显示。值越大，候选列表中同音字越多。 |

------

## 第二部分：`__patch`（特殊语法，可能是 Plum 安装器专用）

yaml

```
__patch:
# Rx: iDvel/rime-ice:others/recipes/grammar:schema=rime_ice {
  - patch/+:
      grammar:
        language: wanxiang-lts-zh-hans
        collocation_max_length: 6
        collocation_min_length: 3
        collocation_penalty: -14
        non_collocation_penalty: -6
        weak_collocation_penalty: -100
        rear_penalty: -20
      translator/contextual_suggestions: false
      translator/max_homophones: 8
# }
```



这是 **Plum（Rime 的包管理器）** 或 **`rime-install` 安装脚本** 使用的特殊语法，不是标准 Rime 配置语法。

### 语法拆解

| 符号         | 含义                                                |
| :----------- | :-------------------------------------------------- |
| `__patch:`   | 告诉安装器：这是一组需要"合并"到目标文件中的配置    |
| `- patch/+:` | 表示**追加/合并**操作，将后面的内容加入到目标配置中 |
| `# Rx: ...`  | 注释，记录这条 patch 的来源配方（recipe），方便追踪 |
| `# }`        | 结束标记，和前面的 `# {` 配对，标识 patch 范围      |

> **注意**：`__patch` 和 `patch` 不是同一个东西。`patch` 是 Rime 引擎层面的配置覆盖；`__patch` 是 Plum 安装器层面的补丁操作，**执行完后**会把内容合并到最终配置文件里，你实际上在用户文件夹里看到的 `rime_ice.custom.yaml` 可能已经被它修改过了。

### 各个参数的含义

这部分是 **语言模型（grammar）的精细调参**：

| 参数                                       | 含义                     | 效果解读                                                     |
| :----------------------------------------- | :----------------------- | :----------------------------------------------------------- |
| `language: wanxiang-lts-zh-hans`           | 指定使用的语言模型文件名 | 调用 `wanxiang-lts-zh-hans.gram` 这个模型文件                |
| `collocation_max_length: 6`                | 最大搭配长度             | 模型最多考虑 **6 个字**的词语搭配关系。值越大，能处理的短语越长，但计算开销也越大。 |
| `collocation_min_length: 3`                | 最小搭配长度             | 模型至少考虑 **3 个字**的搭配关系。少于3个字的词不触发模型优化。 |
| `collocation_penalty: -14`                 | 搭配惩罚值（负分）       | 当候选词**符合**搭配模型预测时，给予 **-14** 分的加分（因为是负数惩罚，实际是**提升优先级**）。数值越负（如 -20），符合搭配的候选越靠前。 |
| `non_collocation_penalty: -6`              | 非搭配惩罚值（负分）     | 当候选词**不符合**搭配模型预测时，给予 **-6** 分的加分（提升幅度小于符合搭配的情况）。所以**符合搭配的候选（-14）会比不符合搭配的候选（-6）优先**。 |
| `weak_collocation_penalty: -100`           | 弱搭配惩罚（极强的负分） | 这是一个**超强加分项**，用于某些特定的、被模型认定为"强搭配"的短语。数值极负（-100），几乎能确保这些候选排在第一位。 |
| `rear_penalty: -20`                        | 尾词惩罚（极强的负分）   | 对于句子**末尾**的词，额外给予 **-20** 的加分，让句末的词更倾向于排在前面，优化句子的结尾。 |
| `translator/contextual_suggestions: false` | 关闭上下文建议           | **不**根据前文内容动态调整候选词排序（也就是说，大模型的整句预测功能**关闭了**）。设为 `true` 才开启。 |
| `translator/max_homophones: 8`             | 最大同音候选数量         | 覆盖了前面 `patch` 部分的设置，从 4 **改为 8**，允许显示**更多**同音候选项（这里的优先级更高，因为它是后面追加的）。 |

**优先级说明**

这个配置片段中，`max_homophones` **同时出现了两次**：

1. 第一部分：`translator/max_homophones: 4`
2. 第二部分：`translator/max_homophones: 8`

**生效的是哪一个？**

这取决于**执行顺序**：

- 如果这是 `rime_ice.custom.yaml` 文件中的内容，**自上而下执行**，后面的 `max_homophones: 8` 会**覆盖**前面的 `4`，最终生效的是 **8**。
- 如果第一部分在 `default.custom.yaml` 中，第二部分在 `rime_ice.custom.yaml` 中，则方案级补丁（后者）优先级更高，也是 **8** 生效。

所以，在这个配置中，最终 `max_homophones` 的值是 **8**。





[rime-ice/others/docs/Installation.md at main · iDvel/rime-ice](https://github.com/iDvel/rime-ice)

[配置覆写和定制 | oh-my-rime输入法](https://www.mintimate.cc/zh/guide/configurationOverride.html)

