Skip to content

Commit 5c21df5

Browse files
iDvelmirtlecn
andcommitted
feat!: 部件拆字反查、辅码 (iDvel#643)
BREAKING CHANGE: 部件拆字方案替换了两分方案 Co-authored-by: Mirtle <mirtle.cn@outlook.com>
1 parent 6832513 commit 5c21df5

19 files changed

+36378
-99232
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
[RIME(Rime Input Method Engine) / 中州韵输入法引擎](https://rime.im/) 是一个跨平台的输入法算法框架。
1010

11-
这里是 Rime 的一份配置仓库。雾凇拼音提供了一套开箱即用的完整配置,包含了输入方案(全拼、双拼)、长期维护的词库及各项扩展功能。用户需要下载平台对应的前端,并将此配置放到配置目录。
11+
这里是 Rime 的一份配置仓库,用户需要下载各平台对应的前端,并将此配置应用到配置目录。
12+
13+
雾凇拼音提供了一套开箱即用的完整配置,包含了输入方案(全拼、双拼)、长期维护的词库及各项扩展功能。
1214

1315
详细介绍:[Rime 配置:雾凇拼音](https://dvel.me/posts/rime-ice/)
1416

@@ -24,13 +26,13 @@
2426
- 主要功能
2527
- [melt_eng](https://github.com/tumuyan/rime-melt) 英文输入
2628
- [优化英文输入体验](https://dvel.me/posts/make-rime-en-better/)
27-
- [两分输入法](http://cheonhyeong.com/Simplified/download.html) 拼字
29+
- [部件拆字方案](https://github.com/mirtlecn/rime-radical-pinyin) 反查、辅码
2830
- 自整理的 Emoji
2931
- [以词定字](https://github.com/BlindingDark/rime-lua-select-character)
3032
- [长词优先](https://github.com/tumuyan/rime-melt/blob/master/lua/melt.lua)
3133
- [Unicode](https://github.com/shewer/librime-lua-script/blob/main/lua/component/unicode.lua)
3234
- [数字、人民币大写](https://wb98.gitee.io/)
33-
- 日期、时间、星期、农历
35+
- 日期、时间、星期、[农历](https://github.com/boomker/rime-fast-xhup)
3436
- 常见错音错字提示
3537
- 所有标点符号直接上屏,/ 模式改为 v 模式,/ 直接上屏
3638
- 增加了许多拼音纠错

double_pinyin.schema.yaml

Lines changed: 74 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
# Rime schema
22
# encoding: utf-8
33

4-
54
# 复制自 rime_ice.schema.yaml ,适配了双拼。
65
# 双拼键位映射复制自 https://github.com/rime/rime-double-pinyin
76
# 双拼之间主要就是 speller/algebra 和 translator/preedit_format 这里有区别。
87
#
98
# 全拼的自定义文本和双拼有些冲突,改成了 custom_phrase_double ,需要创建 custom_phrase_double.txt 文件。
109
#
11-
# 默认启用的中英混输词库是全拼的,需要在 melt_eng.dict.yaml 中修改为对应的双拼的。
12-
# 还需要在英文方案 melt_eng.schema.yaml 将数字的拼写规则 __include: algebra_rime_ice 改为对应的双拼。
10+
# 目前配置中有个别功能仍然是全拼拼写,不能自动适配,所以需要手动修改一下:
11+
# 1. 中英混输词库的拼写: 在英文词库文件 melt_eng.dict.yaml 修改为对应的双拼词库
12+
# 2. 英文中部分符号的派生规则:在英文方案文件 melt_eng.schema.yaml > speller > algebra 修改为对应的双拼拼写运算
13+
# 3. 部件拆字的拼写规则: 在部件拆字方案 radical_pinyin.schema.yaml > speller > algebra 修改为对应的双拼拼写运算
14+
# 打个补丁一劳永逸,补丁写法参考 [常见问题](https://github.com/iDvel/rime-ice/issues/133)
1315

1416

1517
# 方案说明
@@ -23,19 +25,18 @@ schema:
2325
雾凇拼音 - 自然码双拼
2426
https://github.com/iDvel/rime-ice
2527
dependencies:
26-
- melt_eng # 英文输入,作为次翻译器挂载到拼音方案
27-
- liangfen # 两分拼字,作为反查挂载到拼音方案
28+
- melt_eng # 英文输入,作为次翻译器挂载到拼音方案
29+
- radical_pinyin # 部件拆字,反查及辅码
2830

2931

3032
# 开关
31-
# 鼠须管 0.16 后,用快捷键切换时的提示文字由 states 定义
3233
# states: 方案选单显示的名称。可以注释掉,仍可以通过快捷键切换。
33-
# reset: 默认状态。 注释掉后,切换窗口时不会重置到默认状态。
34+
# reset: 默认状态。注释掉后,切换窗口时不会重置到默认状态。
3435
switches:
3536
- name: ascii_mode
3637
states: [ 中, A ]
3738
reset: 0
38-
- name: ascii_punct # 中英标点
39+
- name: ascii_punct # 中英标点
3940
states: [ ¥, $ ]
4041
reset: 0
4142
- name: traditionalization
@@ -47,12 +48,17 @@ switches:
4748
- name: full_shape
4849
states: [ 半角, 全角 ]
4950
reset: 0
51+
- name: single_char # search.lua 的功能开关,辅码查词时是否单字优先
52+
abbrev: [词, 单]
53+
states: [正常, 单字]
54+
# reset: 0
5055

5156

5257
# 输入引擎
5358
engine:
5459
processors:
55-
- lua_processor@select_character # 以词定字
60+
- lua_processor@select_character # 以词定字
61+
- lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏
5662
- ascii_composer
5763
- recognizer
5864
- key_binder
@@ -65,25 +71,28 @@ engine:
6571
- ascii_segmentor
6672
- matcher
6773
- abc_segmentor
74+
- affix_segmentor@radical_lookup # 部件拆字自定义 tag
6875
- punct_segmentor
6976
- fallback_segmentor
7077
translators:
7178
- punct_translator
7279
- script_translator
73-
- lua_translator@date_translator # 时间、日期、星期
74-
- lua_translator@lunar # 农历
75-
- table_translator@custom_phrase # 自定义短语 custom_phrase_double.txt
76-
- table_translator@melt_eng # 英文输入
77-
- reverse_lookup_translator@liangfen # 反查,两分拼字
78-
- lua_translator@unicode # Unicode
79-
- lua_translator@number_translator # 数字、金额大写
80+
- lua_translator@date_translator # 时间、日期、星期
81+
- lua_translator@lunar # 农历
82+
- table_translator@custom_phrase # 自定义短语 custom_phrase_double.txt
83+
- table_translator@melt_eng # 英文输入
84+
- table_translator@radical_lookup # 部件拆字反查
85+
- lua_translator@unicode # Unicode
86+
- lua_translator@number_translator # 数字、金额大写
8087
filters:
81-
- lua_filter@corrector # 错音错字提示
82-
- simplifier@emoji # Emoji
83-
- simplifier@traditionalize # 简繁切换
84-
- lua_filter@autocap_filter # 英文自动大写
85-
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
86-
- uniquifier # 去重
88+
- lua_filter@corrector # 错音错字提示
89+
- simplifier@emoji # Emoji
90+
- simplifier@traditionalize # 简繁切换
91+
- reverse_lookup_filter@radical_reverse_lookup # 部件拆字滤镜
92+
- lua_filter@search@radical_pinyin # 部件拆字辅码
93+
- lua_filter@autocap_filter # 英文自动大写
94+
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
95+
- uniquifier # 去重
8796

8897

8998
# Lua 配置: 日期、时间、星期、ISO 8601、时间戳的触发关键字
@@ -95,8 +104,14 @@ date_translator:
95104
timestamp: timestamp # 时间戳: 1669716794
96105

97106

98-
# Lua 配置:农历
99-
lunar: lunar # 癸卯年(兔)冬月廿一 二〇二四年冬月廿一
107+
# Lua 配置:农历的触发关键字
108+
lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十
109+
110+
111+
# Lua 配置:直接上屏单个字符
112+
# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。
113+
# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。
114+
auto_commit_single_punct: "`"
100115

101116

102117
# Lua 配置:为 corrector 格式化 comment,占位符为 {comment}
@@ -140,12 +155,12 @@ reduce_english_filter:
140155

141156
# 主翻译器,拼音
142157
translator:
143-
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
144-
prism: double_pinyin # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
145-
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
146-
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
147-
initial_quality: 1.2 # 拼音的权重应该比英文大
148-
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
158+
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
159+
prism: double_pinyin # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
160+
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
161+
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
162+
initial_quality: 1.2 # 拼音的权重应该比英文大
163+
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
149164
- xform/([bpmnljqxy])n/$1in/
150165
- xform/(\w)g/$1eng/
151166
- xform/(\w)q/$1iu/
@@ -190,14 +205,6 @@ melt_eng:
190205
- xform/.*// # 清空提示码
191206

192207

193-
# 反查:两分(拼字)
194-
liangfen:
195-
dictionary: liangfen # 挂载两分词典 liangfen.dict.yaml
196-
prefix: "L" # 以 L 开头来反查
197-
enable_completion: true # 补全提示
198-
# tips: 〔两分〕 # 反查时显示的文字,建议注释掉,否则很多 L 开头的英文单词也会显示这个
199-
200-
201208
# 自定义短语
202209
custom_phrase:
203210
dictionary: ""
@@ -210,16 +217,16 @@ custom_phrase:
210217

211218
# Emoji
212219
emoji:
213-
opencc_config: emoji.json
214220
option_name: emoji
221+
opencc_config: emoji.json
215222

216223

217224
# 简繁切换
218225
traditionalize:
219226
option_name: traditionalization
220-
opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
221-
tips: none # 转换提示: all 都显示 | char 仅单字显示 | none 不显示。
222-
excluded_types: [ reverse_lookup ] # 不转换反查(两分拼字)的内容
227+
opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
228+
tips: none # 转换提示: all 都显示 | char 仅单字显示 | none 不显示。
229+
tags: [ abc ] # 限制在 abc tag,不对其他如反查的内容做简繁转换
223230

224231

225232
# 标点符号
@@ -236,27 +243,47 @@ punctuator:
236243
__include: symbols_caps_v:/symbols # 从 symbols_caps_v.yaml 导入配置
237244

238245

246+
# 部件拆字反查
247+
radical_lookup:
248+
tag: radical_lookup
249+
dictionary: radical_pinyin
250+
enable_user_dict: false
251+
prefix: "uU" # 反查前缀(反查时前缀会消失影响打英文所以设定为两个字母,或可改成一个非字母符号),与 recognizer/patterns/radical_lookup 匹配
252+
tips: " 〔拆字〕"
253+
comment_format:
254+
- erase/^.*$//
255+
# 部件拆字滤镜
256+
radical_reverse_lookup:
257+
tags: [ radical_lookup ]
258+
dictionary: rime_ice # 拼音标注来源,可将 other/single_pinyin.reverse.bin 拷贝至 build/ 目录,此处改为 single_pinyin 来为所有字显示拼音
259+
# comment_format: # 自定义 comment,例如在左右加上括号
260+
# - xform/^/(/
261+
# - xform/$/)/
262+
263+
239264
# 处理符合特定规则的输入码,如网址、反查
265+
240266
recognizer:
241267
import_preset: default # 从 default.yaml 继承通用的
242268
patterns: # 再增加方案专有的:
243269
punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols
244-
reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查
245-
unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀
246-
number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀
247-
gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀
270+
radical_lookup: "^uU[a-z]+$" # 响应部件拆字的反查,与 radical_lookup/prefix 匹配
271+
unicode: "^U[a-f0-9]+" # 脚本将自动获取第 2 个字符 U 作为触发前缀,响应 lua_translator@unicode,输出 Unicode 字符
272+
number: "^R[0-9]+[.]?[0-9]*" # 脚本将自动获取第 2 个字符 R 作为触发前缀,响应 lua_translator@number_translator,数字金额大写
273+
gregorian_to_lunar: "^N[0-9]{1,8}" # 脚本将自动获取第 2 个字符 N 作为触发前缀,响应 lua_translator@lunar公历转农历,输入 N20240115 得到「二〇二三年腊月初五」
248274

249275

250276
# 从 default 继承快捷键
251277
key_binder:
252278
import_preset: default # 从 default.yaml 继承通用的
279+
search: "`" # 辅码引导符,要添加到 speller/alphabet
253280
# bindings: # 也可以再增加方案专有的
254281

255282

256283
# 拼写设定
257284
speller:
258285
# 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射
259-
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA
286+
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA`
260287
delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。
261288
algebra:
262289
- erase/^xx$/

0 commit comments

Comments
 (0)