3.1 KiB
3.1 KiB
📔 Rime YAML Custom Patch 语法笔记
一、 核心规则与权重
- 权重排序:
custom.yaml>schema.yaml>default.yaml。 - 对应关系:修改
xxx.schema.yaml需创建xxx.custom.yaml。注意:.dict.yaml无法被 patch。 - 最终形态原则:Patch 作用于编译后的“最终形态”(见
build/文件夹)。若原方案包含__include,需 patch 其引入后的结果,而非 patch__include命令本身。 - 结构限制:一个
custom文件顶层只能有一个patch:入口。
二、 常用引用命令
__include: [路径]:将指定段落内容引入当前位置。__patch: [路径]:功能类似 include,但可叠加使用(多个__include只有最后一个生效)。__append: [列表]:配合 patch 使用,将新列表内容追加到原列表后方实现拼接。
三、 语法操作符速查
| 操作类型 | 语法示例 | 说明 |
|---|---|---|
| 全局替换 | key: new_value |
慎用! 会清空该键下的所有原有子项 |
| 局部替换 | key/subkey: value |
仅修改特定项,不影响同级其他项 |
| 末尾追加 | key/+: [list] |
在列表末尾添加新元素 |
| 特定行替换 | key/@n: value |
替换第 n+1 行(索引从 0 开始) |
| 特定行插入 | key/@before n: value |
在第 n+1 行前插入,原内容后移 |
| 末尾行替换 | key/@last: value |
直接定位并替换最后一行 |
| 删除/失效 | key/subkey: |
不支持 /-。通过将值设为空来使其失效 |
四、 关键行为解析
1. 局部修改 vs. 覆盖重写
- 推荐(局部):
menu/page_size: 10—— 只改数字,保留menu下的其他设置(如字体、颜色)。 - 危险(全局):
menu: { page_size: 10 }—— 会导致menu下除page_size外的所有配置被删除。
2. 列表(List)的操作细节
对于 engine/filters 等有严格顺序要求的模块:
-
不能直接用
/+:因为/+默认加在末尾。如果某个引导器(Translator)必须排在前面,加在末尾会导致功能失效。 -
精准定位:
patch: engine/translators/@before 0: table_translator@custom_phrase # 插入到首行 engine/filters/@5: lua_filter@new_filter # 替换第6行注:
@语法后直接跟值,不需要加-横线。
3. 如何“删除”配置
由于 Rime Patch 不支持 /- 语法,删除某行有两种方式:
- 重写整个段落:在
patch中重新列出需要的行,剔除不需要的行(最彻底)。 - 置空法:
key/subkey:。虽然键还在,但值为空,通常能停止该功能。
五、 缩进与格式
- YAML 严格遵守 2 空格缩进。
- 不要在
patch:段落中间插入顶层节点,否则会截断 Patch。 - 外部预设(如模糊音)建议放在文件末尾,通过
__include引入到patch内部。
💡 提示:调试 Patch 时,若结果不符合预期,请第一时间检查 build/ 文件夹下的产物,那是 Rime 真正读取的配置。