tomoemami.github.io2025-04-10 13:33

使用rime的万象拼音方案

文章摘要

这篇文章介绍了如何使用万象拼音方案的辅助码功能来提高输入效率。 文章首先解释了辅助码的工作原理:在输入确定拼音后,继续输入一个部首的读音,可以将目标字更快地出现在候选列表中。例如,想输入“镇”字,可以输入“vfj”,其中“vf”是“zhen”的拼音,“j”是“金”字旁的声母。 然而,文章也指出辅助码功能存在一个问题:如果相关的拼音没有该声母的候选词,输入框就会消失,影响输入体验。 最后,文章提供了在配置文件中禁用辅助码功能的方法,以解决这个问题。

万象拼音有一个自带的辅助码功能,其中第一个选项会默认启用:

辅助码它可以在输入一个确定得拼音后面继续输入一个部首的读音,使得这个字出现在靠前甚至第一位。这种方式易于理解,无须记忆字根,一切基于拼音得基础上。例如:

功能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 中把这几行移除掉,只剩下第一行和最后一行。