Files
notes/resource/工具/rime/Rime YAML Custom Patch 语法笔记.md
T
Docker7530 1a3976708a 1772702706
2026-03-05 17:25:08 +08:00

3.1 KiB
Raw Blame History

📔 Rime YAML Custom Patch 语法笔记

一、 核心规则与权重

  1. 权重排序custom.yaml > schema.yaml > default.yaml
  2. 对应关系:修改 xxx.schema.yaml 需创建 xxx.custom.yaml注意: .dict.yaml 无法被 patch。
  3. 最终形态原则:Patch 作用于编译后的“最终形态”(见 build/ 文件夹)。若原方案包含 __include,需 patch 其引入后的结果,而非 patch __include 命令本身。
  4. 结构限制:一个 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 不支持 /- 语法,删除某行有两种方式:

  1. 重写整个段落:在 patch 中重新列出需要的行,剔除不需要的行(最彻底)。
  2. 置空法key/subkey: 。虽然键还在,但值为空,通常能停止该功能。

五、 缩进与格式

  • YAML 严格遵守 2 空格缩进
  • 不要在 patch: 段落中间插入顶层节点,否则会截断 Patch。
  • 外部预设(如模糊音)建议放在文件末尾,通过 __include 引入到 patch 内部。

💡 提示:调试 Patch 时,若结果不符合预期,请第一时间检查 build/ 文件夹下的产物,那是 Rime 真正读取的配置。