diff --git a/README.md b/README.md
index 6f80945..a03e1bd 100644
--- a/README.md
+++ b/README.md
@@ -215,7 +215,7 @@ wanxiang.custom.yaml是对wanxiang.schema.yaml的补丁以此类推
schema,default,weasel,squirrel
```
-注意不要删除和变更每一个custom的表头。
+注意不要删除和变更每一个custom的表头。**关于如何patch,参见方案文件中custom目录携带的patch方法论**
更详细参照:[🚀 Rime 万象拼音输入方案 新手安装配置指南](https://docs.qq.com/doc/DQ0FqSXBmYVpWVFpy?rtkey=)
@@ -341,12 +341,19 @@ wanxiang_lookup:
#shijian:仅仅作为提示使用,编码已经写死,引导键可以在key_binder下修改前缀
#时间:osj 或者 /sj
#日期:orq 或者 /rq
+#日期差:orc 或者 /rc
+#之所以单独列出是为了保证rq能直接数字上屏,这个功能需要输入数字,所以/rc这一步不能上屏,
+#但我们把逻辑后置用来代表结束就能在结束时也使用数字上屏,使用方法:
+#/rc26p,/rc26+,/rc26p= 随意一个都是加上这个差值,得到未来日期;
+#/rc26-,/rc26o 随意一个都是减去这个差值,得到过去日期
+#以此实现了主键盘不用刻意按下shift,-=两个按键直接按,手机上也有op兼容可用,小键盘-+直接用
#农历:onl 或者 /nl
#星期:oxq 或者 /xq
#今年第几周:oww 或者 /ww
#节气:ojq 或者 /jq
#日期+时间:odt 或者 /dt
#时间戳:ott 或者 /tt
+#/utc查询热门城市UTC时间
#大写N日期:N20250315 或者N0312不带年
#节日:ojr 或者 /jr
#问候模板:/day 或者 oday
@@ -425,6 +432,9 @@ datetime_formats:
**自动上屏:** 例如:三位、四位简码唯一时,自动上屏如`jjkw岌岌可危` `zmhu怎么回事` 。默认未开启,方案文件中`speller:`字段下取消注释这两句开启 `# auto_select: true # auto_select_pattern: ^[a-z]+/|^[a-df-zA-DF-Z]\w{3}|^e\w{4}`
+**数字后自动半角:** 当中文状态输入数字的时候后面立即输入,。将自动转换为数字分割符,例如科学记数法1000,000 小数点 3.1415,如果你加入冒号:还可以优雅的输入时间12:30,当然你还可以双击输入的符号恢复全角符号的输出。但若你完全没有场景使用该功能,则可以通过patch,将其修改为commit
+```punctuator/digit_separators: ",." > punctuator/digit_separators: commit```
+
**错音错字提示:** 例如:输入`gei yu给予`,获得`jǐ yǔ`提示,此功能与全拼、双拼类型无关全部支持;
@@ -469,7 +479,7 @@ datetime_formats:
**中文无感造词Lua(仅PRO):** 在关闭调频的情况下,通过逐步选字选词的方式上屏将为你记录整段,且不会产生小碎片,所造词汇与db用户词是一回事,遵循用户词管理的相关逻辑,其中直接上屏不造词。相比按需造词更加不打断输入。
-**英文造词Lua:** 例如当输入scx的时候没有任何候选,此时可以追加\,```scx\```可以触发创建候选,但是有的时候我们想要任意编码进行英文造词,但是又有汉字在前面怎么办,本着一次不行就来两次的原则```nihao\\```末尾输入两个就可以了。然后空格上屏他就记录到了en.userdb,导出和同步与用户词逻辑一致。
+**英文造词Lua:** 例如当输入scx的时候没有任何候选,此时可以追加\,```scx\```可以触发创建候选,但是有的时候我们想要任意编码进行英文造词,但是又有汉字在前面怎么办,本着一次不行就来两次的原则```nihao\\```末尾输入两个就可以了。当然你也可以统一理解为按两下来触发强制英文候选。然后空格上屏他就记录到了en.userdb,导出和同步与用户词逻辑一致。
**用户词删除:** 使用Ctrl+del是rime系统删除用户词,就可以将用户词标记为c<=0,这在rime系统中就表现为不使用,假性删除。
diff --git a/custom/patch方法论.md b/custom/patch方法论.md
index 9936152..2539b6d 100644
--- a/custom/patch方法论.md
+++ b/custom/patch方法论.md
@@ -1,12 +1,77 @@
# Rime YAML Custom Patch 语法指南
+patch是对方案文件前端配置文件做出补丁修改的最高权重配置文件
+权重排序为 custom.yaml > schema.yaml > default.yaml
+我们修改方案功能要找准目标,例如修改wanxiang.schema.yaml则需要创建或者修改wanxiang.custom.yaml,dict.yaml是不能被patch的
+知道了以上信息我们还要了解custom的工作逻辑,在编译的时候,文件将先处理本文件内的引用如:引用__include: 补丁__patch: 跟随__append:
+因此当schema中如果涉及到__include等这些方法,那么你看到的则不是最终形态,最终形态可以在build文件夹中看到他递归整理后的样子,而我们custom patch就是对这个最终形态进行修改,所以我们不能patch一个__include段落就是这个缘故。
+同样在custom文件中我们为了简化也可以使用__include这样的命令,比如我们预设文件中引用了关系到双拼类型的转写文件,同样是先将这个文件对应的段落拿进来,再用这个段落替换schema原本的段落从而完成修改。
+```
+patch:
+ speller/algebra:
+ __patch:
+ - wanxiang_algebra:/pro/自然码
+ - wanxiang_algebra:/pro/直接辅助
+```
+知道了这些我们说一个极为重要的点:**一个custom文件顶层必须只有一个patch:**
+
+在YAML语法中同一个段落内的内容必须按层级进行两个空格的缩进,依次4个、6个缩进下去,因此写在patch:下面的内容也不例外,那么能不能顶层再写东西了?答案是可以
+但不能插入到patch内容的中间,这将会截断整个patch段落,你可以将这些内容放在文件的最后,不干扰patch段落,就像万象携带的模糊音等段落。
+
+1、引用__include
+```
+schema:
+ __include: xxx
+```
+将顶层段落xxx下面的内容放在schema下面
+
+```
+schema:
+__include: xxx
+```
+将顶层段落xxx下面的内容放在与schema同级的位置,注意看缩进的位置
+
+```
+ schema:
+ __include: wanxiang_algebra:/xxx
+```
+将wanxiang_algebra.yaml文件中,顶层段落xxx下面的内容放在与schema下面
+
+2、补丁__patch: 跟随__append:
+
+在单个段落下功能用法等同于__include,几乎没什么区别,但他可以叠加使用,如:
+```
+patch:
+ speller/algebra:
+ __include: wanxiang_algebra:/mixed/通用派生规则
+ __patch: wanxiang_algebra:/mixed/全拼
+```
+在使用了__include的下面我们可以继续使用__patch来让另一个段落继续跟过来,如果是两个__include摞起来是没用的
+但这也并非__patch自己完全的功劳,因为在转写段落跟随在一起的情况下我们还会在原段落加入跟随__append命令,形如:
+```
+patch:
+ speller/algebra:
+ __include: wanxiang_algebra:/mixed/通用派生规则
+ __patch: wanxiang_algebra:/mixed/全拼
+#另一个文件中
+mixed:
+ 全拼:
+ __append:
+ - xxx
+ - yyy
+```
+patch可单用于段落整合,也可用于表与表之间的内容拼接,拼接时叠加__append:跟随命令使得两个表段落拼接到一起共同作为上层段落的值
+
+知道了以上几个命令我们大概率能完成本文件内“最终态”的认识,在这个基础上我们开始了对schema打补丁的操作。
+
+在打补丁前我们可以将段落的上层认为是本层的key键,本层及其下面所有认为是上层的值value,在这个概念的加持下,我们学习一些patch语法如下:
## 语法表格
| 操作类型 | 语法 | 说明 |
| -------------- | ------------------------- | ---------------------------- |
| **新增** | `key/+:` | 在某个列表中追加值,自动加在末尾 |
-| **删除** | `key/-:`(不可用) | 从列表中移除值(不可用) |
+| **删除** | `key/-:`(错误示例不可用) | 从列表中移除值(错误示例不可用) |
| **全局替换** | `key: new_value` | 替换整个键的值 |
| **部分替换** | `key/index/subkey: value` | 修改列表中的特定项,不影响其他项 |
| **特定行替换** | engine/filters/@12 | 替换列表中第13行的值 |
@@ -35,6 +100,8 @@ patch:
# Rime YAML Patch 机制解析
+我们看到可以基于层级使用/依次代表下一层的路径,也可以:换行空两格代表,但是在patch中这个事情确整出了差别,如下:
+
## 为什么 `menu/page_size: 10` 和 `menu: { page_size: 10 }` 结果不同?
在 **Rime YAML Patch 机制** 下,`menu/page_size: 10` 和 `menu: { page_size: 10 }` **看似等价**,但 **行为是不同的**,主要原因在于 **Patch 机制的覆盖策略**。
diff --git a/custom/wanxiang.custom.yaml b/custom/wanxiang.custom.yaml
index 1c2731b..d354c2d 100644
--- a/custom/wanxiang.custom.yaml
+++ b/custom/wanxiang.custom.yaml
@@ -268,4 +268,4 @@ patch:
- xlit/qwertyuiopasdfghjklzxcvbnm/QWWRRYUIIPASSFFHJJLZXXVBBM
14jian:
__append:
- - xlit/qwertyuiopasdfghjklzxcvbnm/QQEETTUUOOAADDGGJJLZZCCBBM
+ - xlit/qwertyuiopasdfghjklzxcvbnm/QQEETTUUOOAADDGGJJLZZCCBBM
\ No newline at end of file
diff --git a/custom/wanxiang_pro.custom.yaml b/custom/wanxiang_pro.custom.yaml
index 1ef8e60..a00a365 100644
--- a/custom/wanxiang_pro.custom.yaml
+++ b/custom/wanxiang_pro.custom.yaml
@@ -2,7 +2,7 @@ patch:
speller/algebra:
__patch:
#- 模糊音 # 这里启用后,本文件末尾可配置具体条目
- - wanxiang_algebra:/pro/自然码 # 可选输入方案名称:自然码, 自然龙, 小鹤双拼, 搜狗双拼, 微软双拼, 智能ABC, 紫光双拼, 国标双拼,龙三
+ - wanxiang_algebra:/pro/自然码 # 可选输入方案名称:自然码, 自然龙, 小鹤双拼, 搜狗双拼, 微软双拼, 智能ABC, 紫光双拼, 国标双拼
- wanxiang_algebra:/pro/直接辅助 #辅助码升级为:直接辅助和间接辅助两种类型,都是句中任意,不同点在于直接辅助是nire=你 而间接则需要/引导 ni/re=你 ,在这个基础上直接辅助支持拼音后任意位置数字声调参与,间接辅助声调在/引导前参与
#- 自然码提权 #本文件末尾,有自然码和小鹤的可以用
##########################以上格式受指令初始化控制,最好保持格式不变,如果发生变更请不要使用指令修改相关数据#####################################