Skip to content

前缀编码 ​

上一节中您学习了冰雪清韵的拼写规则,能够输入词语中每个字的声母和韵母来检索词语,或者输入单字中每个字的声码和韵码来检索单字。本节中我们将声母韵母以及声码韵码重新组合成前缀码的格式,以进一步提高输入效率。

选词与编辑 ​

本方案每页显示六个候选,选重键与一般拼音方案不同:

操作按键
确认首选空格
选择第 2~6 项2、3、8、9、0
下一页、上一页Tab、翻页后的 Shift+Tab
第一页切换字词/单字Shift+Tab,上屏后恢复默认
定位第 1~4 个音节末尾1、4、5、6
回到最后一个音节末尾7
删除编码、取消当前输入BackSpace、Escape

定位后可以给相应片段补码并确认,用于拆分造词。[、] 用于以词定字;全息/前缀模式和其他编辑快捷键见高级功能。

音节码固态词典 ​

词语的前缀编码 ​

词语的前缀编码规则为:先打前四个音节的声母编码;少于四个音节时,追加末音节的韵母编码。在下面的例子中,s 和 y 分别表示声母和韵母,下标表示音节的序号:

  1. 一音节词:格式为 s₁y₁,如「一」的编码为 yi;
  2. 二音节词:格式为 s₁s₂y₂,如「可以」的编码为 kyi;
  3. 三音节词:格式为 s₁s₂s₃y₃,如「为什么」的编码为 wsme;
  4. 四音节词:格式为 s₁s₂s₃s₄,如「感同身受」的编码为 gtss;
  5. 多音节词:格式为 s₁s₂s₃s₄,「科学发展观」的编码为 kxfz,「哀莫大于心死」的编码为 vmdy,「中华人民共和国」的编码为 zhrm。

对于二音节词和三音节词来说,只输入声母(即 s₁s₂ 和 s₁s₂s₃)时系统也会检索对应的字词,可以用空格或选择键上屏。

单字的前缀编码 ​

单字的前缀编码规则为:先打前三个字根和最后一个字根的声码;少于四个字根时,追加末字根的韵码。在下面的例子中,s 和 y 分别表示声码和韵码,下标表示字根的序号,特别地 sₙ 表示最后一个字根:

  1. 一字根字:格式为 s₁y₁,如「日」的编码为 ri;
  2. 二字根字:格式为 s₁s₂y₂,如「昌」的编码为 rri;
  3. 三字根字:格式为 s₁s₂s₃y₃,如「晶」的编码为 rrri;
  4. 四字根字:格式为 s₁s₂s₃s₄,如「𣊭」的编码为 rrrr;
  5. 多字根字:格式为 s₁s₂s₃sₙ。

一字根字的补码 ​

由于本方案的字根大多数采用声母和韵母安排键位,几个一字根字对应同样的编码的情况比较多,还有一些低频的一字根字把自己的编码位置让出来给高频字。例如,「十」和「巳」的编码都是 si。为了让这些字也可以不需要选重就打出来,本方案为这些字设计了一些避重的编码,是在标准编码的前面加上一或二个 m(这个键称为「重 chóng」键):

  1. 属于《通用规范汉字表》的字根字,如果在「声韵」码不是首选,则具有「重声韵」码;
  2. 其他字根字,在「声韵」码必定不是首选,且具有「重重声韵」编码。

词语和单字的顶功编码 ​

前缀码由于最大码长限制为 4 码,在检索大词库、大字集时有可能会遇到重码多的情况。为此,我们可以在标准编码的基础上加上一个或多个大写字母,用小写和大写互斥的特性来进一步扩大编码空间。在下面的例子中,S 和 Y 表示大写的声母和韵母,特别地 ;,./ 的大写分别是 :<>?。

词语的顶功编码为:

  • 二音节词:格式为 s₁s₂y₂Y₁
  • 三音节词:格式为 s₁s₂s₃y₃Y₁
  • 四音节词:格式为 s₁s₂s₃s₄Y₄, s₁s₂s₃s₄Y₄Y₁
  • 多音节词:格式为 s₁s₂s₃s₄S₅..Sₙ, s₁s₂s₃s₄S₅..SₙYₙ, s₁s₂s₃s₄S₅..SₙYₙY₁

也就是说,在标准编码的基础上对于二、三音节词可以补首音节韵母,四音节词可以补末音节和首音节韵母,多音节词可以补第五个直到最后一个音节的声母再加上末音节和首音节韵母。

单字的顶功编码为:

  • 二字根字:格式为 s₁s₂y₂Y₁
  • 三字根字:格式为 s₁s₂s₃y₃Y₁
  • 四字根字:格式为 s₁s₂s₃s₄Y₄, s₁s₂s₃s₄Y₄Y₁
  • 多字根字:格式为 s₁s₂s₃s₄S₅..Sₙ, s₁s₂s₃s₄S₅..SₙYₙ, s₁s₂s₃s₄S₅..SₙYₙY₁

也就是说,在标准编码的基础上对于二、三字根字可以补首字根韵码,四字根字可以补末字根和首字根韵码,多字根字不再按前三末一取码而是输入所有字根的声码再加上末字根和首字根韵码。

音节码用户词典 ​

动态调频与动态码长 ​

音节码用户词典存储在 snow_pinyin.userdb 文件夹中、并同步到 snow_pinyin.userdb.txt 中;用户可以利用 Rime 的同步机制来在多个设备之间同步音节码用户词典。

本方案采用动态调频策略,用户打过的词会出现在候选中更靠前的位置。由于可以通过追加编码来进一步区分词语,动态调频使得一个词的码长在输入中会发生动态变化,这个特性称为动态码长。例如,用户第一次想打「调频」时,输入较多码时它才出现在首选。

t p.
  1. _.特聘
  2. 2.调频
  3. 3.脱贫
  4. 8.甜品
  5. 9.炭盆
  6. 0.台盆
to p.
  1. _.调频
  2. 2.脱贫
  3. 3.跳频
  4. 8.朵tpa
  5. 9.凩
  6. 0.几to

但输入过一次之后,下一次只需要较少码就能输入该词:

t p.
  1. _.调频
  2. 2.特聘
  3. 3.脱贫
  4. 8.甜品
  5. 9.炭盆
  6. 0.台盆

自动造词 ​

缓冲造词 ​

缓冲造词的方法为:在没有输入编码的情况下,按 Control+j 进入缓冲模式,然后将想造词的内容拆分成较小的单位来完成输入,此时输入的内容会积累在缓冲区中而不上屏。输入完想造词的内容后,再按一次空格,此时缓冲区中的内容上屏,同时也完成了造词。

下面以造「冰雪输入法」这个词为例:首先按 Control+j,此时会提示「缓冲」(取决于前端的实现,也可能不会有提示),然后分别输入「冰雪」和「输入法」(此时的输入逻辑与平时相同,顶功的功能也有效,因此后一个词会将首选「冰雪」顶上屏),如下图所示:

冰雪s r fa
  1. _.收入法
  2. 2.输入法
  3. 3.水热法
  4. 8.虽然法
  5. 9.𠰫chun1
  6. 0.虽然sr;

然后确认「输入法」,这样想要造词的内容就全部进入了缓冲区:

冰雪输入法

再按一次空格,「冰雪输入法」上屏,同时也完成了造词。下次使用正常规则输入该词即可:

b x s r f
  1. _.冰雪输入法
  2. 2.百姓收入
  3. 3.被性骚扰
  4. 8.本性使然
  5. 9.必须输入
  6. 0.不想杀人

这种造词方式非常灵活,可以以任意方式拆分任意次来输入。确认当前片段与上屏整段缓冲是两步:当前片段仍有候选时,空格先确认该片段;片段全部确认后,再按一次空格将整段上屏。整段上屏后自动退出缓冲,下次输入恢复正常顶屏。输入期间可用退格修改编码,Escape 取消输入;Control+j 切换缓冲开关。

在缓冲造词中使用形音替换法 ​

在前面的缓冲造词法中必须使用拼音来输入每一个片段,不过在拼音重码较多的情况下,这些片段的输入可能不是很方便。为此我们可以使用「形音替换法」:在缓冲模式下,可以使用形码输入单字来参与造词,此时候选中会出现一项或多项,每一项分别对应单字的一个读音,您需要从中选取正确的读音参与造词。

有三点需要注意:一是缓冲模式下形码和拼音可以混用,例如一个字用形码另一个字用拼音;二是无论缓冲模式下用的是形码还是拼音,造词一律使用拼音;三是在缓冲模式下前缀码的上屏规则仍然有效,以韵码结束或长度大于等于 4 的编码不需要空格。

下图中展示了输入 ppjgkvnagnpabw_ 再空格即造好「梦泽闲客」,下一次可以用 mzxk 输入。

ppjg
  1. _.梦📌 meng4
  2. 2.𣡑jue2
  3. 3.𣡮jue2
  4. 8.品牌机构
  5. 9.品牌价格
  6. 0.品牌架构
梦kvna
  1. _.泽📌 ze2
  2. 2.泽📌 shi4
  3. 3.看按钮
  4. 8.可爱
  5. 9.口岸
  6. 0.汉han4
梦泽gnpa
  1. _.闲📌 xian2
  2. 2.个哪怕
  3. 3.功能gn/
  4. 8.国内
  5. 9.概念gn;
  6. 0.观念
梦泽闲bw
  1. _.客📍 ke4
  2. 2.客📍 qia4
  3. 3.🈚️
  4. 8.敝bi4
  5. 9.𡧄gui3
  6. 0.𠕸sui3

造词结果如下:

m z x k
  1. _.梦泽闲客
  2. 2.没仔细看
  3. 3.麻醉学科
  4. 8.毛主席
  5. 9.民族乡
  6. 0.民族性

除以上方法外,本方案还可以像冰雪拼音系列中的其他方案一样使用选择造词、定位造词、组句造词这三种方法造词。您可以参考冰雪四拼的相关文档来进一步了解。

英数混输造词 ​

在科技与流行文化中,经常出现混有英文、数字的词语的情况。为了让这些词也能够自动造词,本方案给 10 个阿拉伯数字、26 个大写英文字母、26 个小写英文字母也指定了相应的音节码。其规则为:

  • 阿拉伯数字编码为 1 yi, 2 vi, 3 s;, 4 si, 5 wu, 6 la, 7 qi, 8 ba, 9 ja, 0 l/,阿拉伯数字固定在二码的次选,中文数字固定在二码的三选;
  • 英文字母的音节码规定为
    • 辅音字母加后缀 .,例如 b 的音节码是 b.
    • 元音字母加前缀 m,例如 a 的音节码是 ma
    • 所有大写字母固定在二码的次选,所有小写字母固定在二码的三选

使用这些音节码打出相应的数字和字母,就可以轻易造出如「5G通信」「哆啦A梦」这样的词:

w g t x
  1. _.网格体系
  2. 2.无感通行
  3. 3.五个体系
  4. 8.外国同学
  5. 9.韦格替蜥
  6. 0.武功天下第一
d l m m
  1. _.哆啦A梦
  2. 2.登录密码
  3. 3.𣧓
  4. 8.当了妈妈
  5. 9.到了妈妈
  6. 0.大林木命

方案码固态词典 ​

一般情况下,输入各种编码时候选的排序会随着用户的使用逐渐调整,以贴合用户的使用习惯。但是,如果高频词的排序常常变动,则难以熟练掌握。因此,本方案精心设计了一些固定候选词,这些词在输入对应编码时的位置是固定的,不会随着用户的使用而变化。

这些方案固定词都定义在 snow_qingyun.fixed.txt 中。不过,如果您希望调整这些固顶词,不推荐直接修改这个文本,因为如果您未来更新冰雪拼音时覆盖安装,则会使得您的修改丢失。推荐的修改方法请参考下面的「方案码用户词典」一节。

在前面所介绍的前缀编码规则的基础上,我们一方面要定义一些便于提高输入速度的编码,另一方面要定义在特定编码上特定候选的排序。这些功能是通过方案码固态词典来实现的:

单字 ​

在 GB2312 范围内,所有以形码编码的单字的候选位置是固定的,而且比词语更优先。除此之外,还定义了以下类型的编码:

  1. 「韵」码:7 个,的 e、我 o、是 i、不 u、了 a、在 ;、和 /。只有二根及以上字可能有此种编码;
  2. 「声空」码:21 个,取字的第一码加空格。只有二根及以上字可能有此种编码;家 b_、想 p_、些 m_、中 f_、也 d_、去 t_、看 n_、他 l_、之 g_、来 k_、生 h_、就 j_、有 q_、好 x_、第 z_、过 c_、都 s_、会 r_、对 v_、这 w_、能 y_
  3. 「声韵」码:80 个,第一码为字的第一码,第二码无理。只有二根及以上字可能有此种编码;
    1. 其中 49 个第二码是整个字的韵母:完 b;、定 b/、校 po、样 p;、吧 fa、吃 fi、跟 f.、嗯 f/、着 de、而 di、前 d;、很 d.、地 ti、国 no、四 ni、网 n,、用 n/、别 le、你 li、后 ga、所 go、质 gi、度 gu、问 g.、到 ko、天 k;、两 k,、自 hi、点 h;、种 h/、说 jo、以 ji、右 qa、左 qo、切 qe、等 z/、原 c;、成 c/、学 se、性 s/、最 re、电 r;、从 r/、给 ve、专 v;、经 v/、理 wi、变 w;、文 w.
    2. 其余 31 个为纯无理:分 bo、比 be、实 bu、公 b,、机 pe、相 pu、水 m/、得 do、为 d,、找 n.、做 lu、子 l;、那 l.、意 l,、再 ka、没 ku、事 k.、先 h.、业 h,、多 je、发 j/、要 xu、她 x;、感 ca、其 c.、期 c,、当 s.、时 ru、进 va、动 vu、高 w/
  4. 「声声空」码:403 个,取字的前两码加空格。只有三根及以上字可能有此种编码;
  5. 「声声声空」码:若干,取字的前三码加空格。只有四根及以上字可能有此种编码。

词语 ​

定义了 535 个二字词位于「声声韵」的首选。除此之外,还定义了以下类型的编码:

  1. 「声韵」码:19 个,第一码为首字的声母,第二码无理。一个 yo、自己 zu、这个 z;、就是 j,、没有 mi、可以 k/、什么 su、我们 wa、但是 du、因为 y;、如果 ro、还是 hu、知道 ze、所以 sa、现在 x.、他们 te、然后 r,、这样 za、起来 q/
  2. 「声声韵」码:46 个,第一码为首字的声母,第二码为次字的声母,第三码无理。每个 mg;、这些 zxi、那些 nxi、这么 zmi、那么 nmi、怎么 zmo、其他 qto、任何 rhi、从而 cvo、因此 yco、可是 ksa、同时 ts;、即使 js/、基于 jye、还有 hyi、只有 zyi、存在 cz;、应该 ygo、只要 zy.、需要 xye、可能 kni、还能 hni、怎能 zni、后来 hlo、认为 rwi、明白 mba、下面 xmi、以后 yh;、之前 zqi、之后 zhi、上午 swi、中午 zwi、下午 xwi、前天 qti、当时 ds/、特别 tbi、超级 cjo、简直 jzo、其实 qse、确实 qsu、开始 kse、一些 yx;、一定 ydi、最后 zhu、一起 yqu、真正 zzo

方案码用户词典 ​

用户可以利用方案码用户词典来对方案码固态词典中的条目进一步自定义。与音节码用户词典不同的是,方案码用户词典存储在 snow_qingyun.userdb 文件夹中、并同步到 snow_qingyun.userdb.txt 中。用户同样可以利用 Rime 的同步机制来在多个设备之间同步方案码用户词典。其操作方式如下:

固定和取消固定 ​

在有编码且选中了一个未固定的词时,Control+; 可以固定该候选至当前位置。例如,当前第一候选词为「编码」时,按下 Control+;,该词出现「📌」标志,表示已经固定到第一位:

b ma
  1. _.编码📌
  2. 2.宝马
  3. 3.白马
  4. 8.爸妈
  5. 9.斑马
  6. 0.兵马

在有编码且选中了一个已固定的词时,Control+; 可以取消固定该候选。例如,当前第一候选词为「因此」且被固定时,

f he
  1. _.符合📌
  2. 2.发挥
  3. 3.返回
  4. 8.分会
  5. 9.峰会
  6. 0.缝合

按下 Control+;,该词「📌」标志消失,表示不再被固定到第一位:

f he
  1. _.发挥
  2. 2.返回
  3. 3.分会
  4. 8.峰会
  5. 9.符合
  6. 0.缝合

自由加词 ​

在有编码时,按下 Control+' 之后候选框消失,以任意方式输入想加的词,再按一下 Control+' 即将词加到该编码第一个可用的候选位置上。例如,输入 kfc → Control+' → 输入「疯狂星期四V我50」→ Control+',则「疯狂星期四V我50」添加为 kfc 的第一候选词。其中的「V」和「50」不经 Rime 上屏,而是由应用直接插入,这样的字母、数字和符号同样会被记下(西文模式下输入的也一样),退格删掉的字符也会相应去掉,首尾的空白则会被忽略。

k f c
  1. _.开发出
  2. 2.空腹吃
  3. 3.咖啡茶
  4. 8.矿粉厂
  5. 9.开封城
  6. 0.开发成
k f c
  1. _.疯狂星期四V我50📍
  2. 2.开发出
  3. 3.空腹吃
  4. 8.咖啡茶
  5. 9.矿粉厂
  6. 0.开封城

再例如,输入 dna → Control+' → 输入「脱氧核糖核酸」→ Control+',此时 dna 已经有固定的第一候选词为「半」,则「脱氧核糖核酸」添加为 dna 的第二候选词。

d na
  1. _.半📌
  2. 2.到那
  3. 3.但那
  4. 8.都拿
  5. 9.大牛
  6. 0.斗牛
d na
  1. _.半📌
  2. 2.脱氧核糖核酸📍
  3. 3.到那
  4. 8.但那
  5. 9.都拿
  6. 0.大牛

前移和后移 ​

在有编码且选中了一个已固定的词时,按 Control+[ 将已经固定的候选前移,Control+] 将已经固定的词后移。如果前移和后移的过程中遇到其他已经固定的词,则会交换位置。例如,这里有两个已经固定的候选且选中了第一个:

f m je
  1. _.吧📌 fa
  2. 2.邑📌
  3. 3.⾢
  4. 8.𧾹
  5. 9.𩇯
  6. 0.富民街

此时按 Control+] 把选中的候选往后移一位。结果如下:

f m je
  1. _.邑📌
  2. 2.吧📌 fa
  3. 3.⾢
  4. 8.𧾹
  5. 9.𩇯
  6. 0.富民街

重置 ​

在有编码时,按下 Control+\ 将当前编码上所有的自定义取消。


用户可以使用 snow_qingyun.custom.yaml 定制上述几种操作的快捷键:

yaml
patch:
  translator/fix_key: "Control+semicolon" # 固定和取消固定
  translator/add_key: "Control+apostrophe" # 自由加词
  translator/up_key: "Control+bracketleft" # 前移
  translator/down_key: "Control+bracketright" # 后移
  translator/reset_key: "Control+backslash" # 重置

关闭方案码用户词典 ​

若不需要固定候选的个性化设置,可以在本方案的补丁中关闭方案码用户词典:

yaml
patch:
  translator/enable_schema_user_dict: false

重新部署后生效,已有数据不会被删除。删除这项补丁并重新部署可恢复。此设置与音节码用户词典的调频、自动造词独立,后者见本页的词库设置。

词库设置 ​

以下设置写入本方案的 snow_qingyun.custom.yaml,修改后重新部署;多个设置合并到同一个 patch 下。补丁文件的位置见使用补丁文件。

以下配置控制拼音词库,不改变本方案的形码词典。

词库与读音 ​

基础单字词典为 snow_pinyin.dict.yaml。多字词库与雾凇拼音共享收词范围,分为 snow_pinyin.base、snow_pinyin.ext、snow_pinyin.tencent,另有用于个人词汇的 snow_pinyin.user。默认一起加载,词典编译后保存在 build/ 中。

单字读音遵循《通用规范汉字字典》。词语尽可能使用单字已有的读音,不记录弱化产生的轻声和连读变调,例如“知识”用 zhi1 shi2,“一个”用 yi1 ge4;部分专有名词允许专用读音。

批量加入词汇 ​

用户文件夹中的 snow_pinyin.user.dict.yaml 用于批量加入个人词汇,多个方案共用。正文每行三列,以制表符分隔,依次为词、以空格分隔的完整带调拼音和词频。例如:

text
冰雪拼音	bing1 xue3 pin1 yin1	100

声调用 1~5 表示,5 表示轻声;不要使用连读变调后的读音。多音字要填写这个词所需的读音。保留文件开头的词典头和 ... 分隔行,加入词条后重新部署。

此文件随方案包提供,覆盖更新前应另存个人词条,更新后再合入。需要长期独立维护时,建立自己的词典文件,例如 my_words.dict.yaml:

yaml
---
name: my_words
version: "1"
sort: by_weight
use_preset_vocabulary: false
...
冰雪拼音	bing1 xue3 pin1 yin1	100

然后在所用方案的补丁中,保留默认词库并追加自己的词库:

yaml
patch:
  translator/packs/+:
    - my_words

词库文件不放入 build/;改动源文件并重新部署,由 Rime 编译。

裁剪词库 ​

若希望减少词库体积,可以在所用方案的补丁中覆盖词库列表。例如保留基础词库、扩展词库和个人词库,不加载腾讯词库:

yaml
patch:
  translator/packs:
    - snow_pinyin.base
    - snow_pinyin.ext
    - snow_pinyin.user

裁剪会改变可用词和候选排序,重新部署后生效。

关闭调频与自动造词 ​

如果练习时希望保持原始词频,可以关闭音节码用户词典:

yaml
patch:
  translator/enable_user_dict: false

重新部署后,不再使用或记录所配置翻译器的个人词频,也不再通过它们自动造词;已有用户词典不会被删除。删除这项补丁并重新部署,即可恢复。

每页候选数 ​

可以在本方案的补丁中设置每页候选数,例如:

yaml
patch:
  menu/page_size: 6

选重键和部分数字键承担方案功能,调整每页候选数时应同时检查选重键是否够用;具体选重、翻页和编辑方式见本方案的相关章节。修改后重新部署。

采用 VitePress 构建