Rime 全拼双拼混输
有朋友提了个 issue 后发现的,Rime 实现全拼双拼混输很简单,只要在拼写运算 speller/algebra 下把 xform 替换为 derive 就可以了。 非常适合初学双拼时使用。 原理 例如小鹤双拼的 z 键: - xform/(.)ou$/$1Ⓩ/ - xlit/Ⓩ/z/ ou 最终转为了韵母的 z,输入 zz 就可以得到「走 zou」了,xform(变形)不保留原型,(.)ou 就没了,改为保留原型的 abbrev(派生)就可以同时支持全拼和双拼了。(官方文档 - 拼写运算的运算子) 解决副作用 显示效果 为了全拼双拼混输的显示效果,也要清空 translator/preedit_format 中对双拼转全拼的转换。 ong 音的冲突 如果词库中有 唵嘛呢叭咪吽 ong ma ni bei mei hong,其中的这个 ong 与小鹤的默认规则冲突,修改一下就好了: - - derive/i?ong$/Ⓢ/ + - derive/(.)i?ong$/$1Ⓢ/ 全拼与双拼的冲突 例如全拼的 jing(静)与小鹤双拼的 ji’ng(技能),Rime 默认 jing 永远排在 ji’ng 前面,这不太符合双拼为主的情况。 正好可以用长词优先 long_word_filter.lua 将「技能」提到「静」的前面。 示例 雾凇拼音 - 小鹤双拼的补丁示例: # double_pinyin_flypy.custom.yaml patch: # 在 engine/filters 插入长词优先的 Lua engine/filters: - lua_filter@corrector - reverse_lookup_filter@radical_reverse_lookup - lua_filter@search@radical_pinyin - lua_filter@autocap_filter - lua_filter@pin_cand_filter - lua_filter@long_word_filter # 增加长词优先 - simplifier@emoji - simplifier@traditionalize - lua_filter@reduce_english_filter - uniquifier # 长词优先设置为提升 10 个词到第 1 个位置 long_word_filter: count: 10 idx: 1 # 双拼不转换为全拼编码 translator/preedit_format: [] # xform 变形改为 derive 派生 speller/algebra: - derive/^([jqxy])u$/$1v/ - derive/^([aoe])([ioun])$/$1$1$2/ - derive/^([aoe])(ng)?...