万象拼音有一个自带的辅助码功能,其中第一个选项会默认启用:
辅助码它可以在输入一个确定得拼音后面继续输入一个部首的读音,使得这个字出现在靠前甚至第一位。这种方式易于理解,无须记忆字根,一切基于拼音得基础上。例如:
功能1 如果想要 镇 字显示在前面 那么在本方案下提供两种方式,第一种就是辅助码声母,vf继续输入j 也就是金字旁得声母即可出现结果,如果还是出现不了你要的结果,可以输入另外主体字的声母来继续缩小范围。
这个的意思是,想找 镇
的时候可以输入 vfj
,这样就会在候选栏里出现拼音为 zhen
而且又带 金 字旁的候选字了。
但是这个输入方式会出现一个问题,那就是如果相关的拼音没有这个声母的候选词,那么整个输入框就会完全消失。所以如果你默认启用这个选项,就会发现打字的时候候选词框是一闪一闪的,非常不习惯。
我们可以在 wanxiang.custom.yaml
中如下设置:
patch: speller/algebra: - xlit/āáǎàōóǒòēéěèīíǐìūúǔùǖǘǚǜü/aaaaooooeeeeiiiiuuuuvvvvv/ - xform/^ng(;.*)/eng$1/ - xform/ńg|ňg|ǹg/eng/ - xform/ń|ň|ǹ/en/ - derive/^([jqxy])u(;.*)$/$1v$2/ - derive/^([aoe])([ioun])(;.*)$/$1$1$2$3/ - xform/^([aoe])(ng)?(;.*)$/$1$1$2$3/ - xform/^(\w+?)iu(;.*)/$1Ⓠ$2/ - xform/^(\w+?)ei(;.*)/$1Ⓦ$2/ - xform/^(\w+?)uan(;.*)/$1Ⓡ$2/ - xform/^(\w+?)[uv]e(;.*)/$1Ⓣ$2/ - xform/^(\w+?)un(;.*)/$1Ⓨ$2/ - xform/^(\w+?)uo(;.*)/$1Ⓞ$2/ - xform/^(\w+?)ie(;.*)/$1Ⓟ$2/ - xform/^(\w+?)i?ong(;.*)/$1Ⓢ$2/ - xform/^(\w+?)ing(;.*)/$1Ⓚ$2/ - xform/^(\w+?)uai(;.*)/$1Ⓚ$2/ - xform/^(\w+?)ai(;.*)/$1Ⓓ$2/ - xform/^(\w+?)eng(;.*)/$1Ⓖ$2/ - xform/^(\w+?)en(;.*)/$1Ⓕ$2/ - xform/^(\w+?)[iu]ang(;.*)/$1Ⓛ$2/ - xform/^(\w+?)ang(;.*)/$1Ⓗ$2/ - xform/^(\w+?)ian(;.*)/$1Ⓜ$2/ - xform/^(\w+?)an(;.*)/$1Ⓙ$2/ - xform/^(\w+?)ou(;.*)/$1Ⓩ$2/ - xform/^(\w+?)iao(;.*)/$1Ⓝ$2/ - xform/^(\w+?)[iu]a(;.*)/$1Ⓧ$2/ - xform/^(\w+?)ao(;.*)/$1Ⓒ$2/ - xform/^(\w+?)ui(;.*)/$1Ⓥ$2/ - xform/^(\w+?)in(;.*)/$1Ⓑ$2/ - xform/^sh/Ⓤ/ - xform/^ch/Ⓘ/ - xform/^zh/Ⓥ/ - xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/ - derive|^(.+);.*$|$1| # 纯双拼的情况 - erase/^(.+);(.+)$/ # 删除原始编码加速检索
上面这段代码实际上是对原方案的一个覆盖。在原始的 wanxiang.schema.yaml
中, speller/algebra
的内容如下:
- set_shuru_schema #拼音转双拼码 - fuzhu_flypy #辅助码部分
辅助声母的代码就在下面的 fuzhu_flypy
内容里:
fuzhu_flypy: ########################################位于词库第七个分号后 __append: - derive|^(.+);.*$|$1| # 纯双拼的情况 - abbrev|^(.+);(\w).*$|$1$2| # 双拼+一位辅助码的情况 - derive|^(.+);(\w).*$|$1$2/| # 双拼1位辅助码+/ - abbrev|^(.+);(\w)(\w).*$|$1$2$3| # 双拼+2位辅助码的情况 - derive|^(.+);(\w)(\w).*$|$1$2$3/| # 双拼+2位辅助码+/ - derive|^(.+);(\w)(\w).*$|$1$2$3o| # 双拼\+2位辅助码\+o,主要用来应对小企鹅这类输入法没法使用符号的场景,但同时有些辅助码会出现异常,如:ui uio>uiuio,手机小企鹅使用时开启 #分号后面第二组辅助码 - abbrev/^(.+);.*?,(\w).*$/$1$2/ - derive|^(.+);.*?,(\w).*$|$1$2/| - abbrev/^(.+);.*?,(\w)(\w).*$/$1$2$3/ - derive|^(.+);.*?,(\w)(\w).*$|$1$2$3/| - derive/^(.+);.*?,(\w)(\w).*$/$1$2$3o/ - xform/◯/;/ #对于微软双拼、搜狗双拼,前面将分号保护了起来,现在放出来让其发挥作用 - erase/^(.+);(.+)$/ # 删除原始编码加速检索
可以看见,从第二行到倒数第二行,都在处理双拼+辅助码的情况。所以我们可以在 wanxiang.custom.yaml
中把这几行移除掉,只剩下第一行和最后一行。