候选注释
用模板配置候选词右侧灰字显示的内容——编码提示、带声调注音、拆字字根,横排与竖排可分别设置
候选注释是候选词右侧的那行灰字。默认显示编码提示(如五笔前缀候选的剩余编码),你可以把它 改成注音、拆字字根,或几种信息的组合。
这是进阶定制
默认配置已适合大多数人。本页面向的是想在候选窗里看到注音或字根的用户——尤其是形码方案 (打得出但不确定怎么读)与正在学习编码的用户。
设置位置:设置工具 →「外观」→ 候选标注 →「候选注释」→ 设置。
快速上手
| 想要的效果 | 竖排注释填 |
|---|---|
| 只显示编码提示(默认) | ${code_hint|code} |
| 显示带声调注音 | ${pinyin} |
| 注音加括号 | {(${pinyin})} |
| 单字显示字根,词组显示注音 | {〔${chaizi}〕}{${pinyin}} |
| 编码 + 注音 | ${code_hint|code}{ (${pinyin})} |
| 悬停提示同款(字根 + 编码 + 读音) | {${chaizi}}{ [${chaizi_code}]}{ ${pinyin}} |
横排注释建议留 ${code_hint|code_rev|shuangpin} 或干脆留空:横排候选窗的宽度由所有候选共享,放注音或
字根很容易把窗口撑得很宽。
变量
| 变量 | 内容 | 示例 |
|---|---|---|
${code_hint} | 引擎给出的编码提示:形码前缀候选的剩余编码、混输的来源标记 | kao、拼 |
${code_rev} 0.122 新增 | 整词在主码表里的实际编码,只取最长的全码(仅拼音来源候选) | wqvb |
${code_rev_all} | 同上,但给出全部码位(含简码,短的在前) | q/trn/trnt |
${shuangpin} 0.122 新增 | 这个候选的双拼编码。全拼方案下也能显示(见下) | nihc |
${pinyin} | 带声调注音 | nǐ hǎo |
${chaizi} | 拆字字根,仅单字候选 | 亻尔 |
${chaizi_code} | 该字在拆字库里的编码,仅单字候选 | wq |
${chaizi_all} | 拆字字根,不限字数(逐字拼接) | 亻尔 女子 |
${dict} | 挂载的注释词库里该词的注释 | apple、🍎 红苹果 |
${chaizi} 限单字是有意的:拆字回答的是「这个字由哪些字根构成」,词组的字根串既难读、
又会把候选行推得很宽。确实需要词组字根时用 ${chaizi_all}。
${code_rev} 和 ${shuangpin} 的分别
两者回答的是不同的问题:
${code_rev}—— 这个词在主码表里怎么打。它去码表词库里查反向索引,所以能查到 什么完全取决于你配了哪个主码表。${shuangpin}—— 这个词的双拼怎么敲。它是算出来的:拿候选自带的拼音和音节划分, 逐个音节过一遍双拼布局。
双拼编码不存在于任何词库里(双拼词库就是全拼词库,双拼只是「全拼 + 一张键盘布局」),
所以它只能算不能查——这也是为什么它得单列一个变量,而不是让 ${code_rev} 换个码源了事。
三个变量都只对拼音来源的候选有值——形码方案下候选的编码就是你自己打的,再显示一遍是冗余。
全拼方案下也能看双拼编码
${shuangpin} 不要求你正在用双拼。用哪份布局按这个顺序找:
- 当前方案本身是双拼 → 用它的布局
- 否则看「主拼音方案」(
schema.primary_pinyin)是不是双拼 → 用它的 - 否则用方案列表里第一个双拼方案
- 一个双拼方案都没装 → 这一项为空
所以全拼用户只要装了双拼方案,候选旁边就能挂着对应的双拼码——想从全拼转双拼时, 这就是一份跟着你打字走的对照表。
出厂模板用 ${code_rev}(只给全码)而不是 ${code_rev_all}:一个字往往有三四个码位,
全列出来会把候选行推得很宽,横排尤其明显。想一眼看全简码、又用竖排的话再换 ${code_rev_all}。
哪些变量能出,还受一个开关管
「方案 → 候选行为 → 编码提示来源」决定放行哪一类编码:codetable 只放行 ${code_rev} /
${code_rev_all},shuangpin 只放行 ${shuangpin},auto(出厂)两者都放行,off 都不放行。
开关管「允许哪些来源」,模板管「按什么顺序和格式摆」。所以把来源设成 codetable 之后,
即使模板里写着 ${shuangpin} 也不会显示——这是按配置办事,不是坏了。
旧名 `${code}` / `${code_all}` 仍然有效
它们是 ${code_rev} / ${code_rev_all} 的别名,会一直保留,老模板不用改。
新写模板建议用新名字:code_rev 的 rev 是 reverse(反查),与「算出来」的 shuangpin
一眼分得开。
变量参数
${chaizi_all} 与 ${code_rev_all} 支持用冒号指定分隔符:
| 写法 | 结果 |
|---|---|
${chaizi_all} | 亻尔 女子 |
${chaizi_all:/} | 亻尔/女子 |
${chaizi_all: · } | 亻尔 · 女子 |
${chaizi_all:} | 亻尔女子 |
${code_rev_all} | q/trn/trnt |
${code_rev_all: } | q trn trnt |
冒号后的内容原样使用,空格不会被忽略。
语法
${a|b} 取首个非空
按顺序取第一个有内容的变量。默认模板 ${code_hint|code_rev|shuangpin} 的意思是:优先用
引擎给的编码提示,没有就退回主码表反查码,再没有(比如你没配主码表)就显示双拼编码。
{ … } 可选段
段内的变量全部为空时,整段(包括里面的括号、标签文字)一起消失。
这是配装饰字符的关键。对比:
| 模板 | 拼音有值 | 拼音为空 |
|---|---|---|
${code_rev} (${pinyin}) | wqvb (nǐ hǎo) | wqvb () ← 空括号 |
${code_rev}{ (${pinyin})} | wqvb (nǐ hǎo) | wqvb |
段内有多个变量时,只要有一个非空就保留整段,空的那个连同紧邻的一个空格一起省去:
{(拼: ${pinyin} ${chaizi})}
都有值 → (拼: nǐ hǎo 亻尔)
字根为空 → (拼: nǐ hǎo)
都为空 → (不显示)两条自动规则
- 空变量吞掉紧邻的一个空格,所以你可以放心用空格分隔变量,不必担心某个变量为空时留下 多余间距。
- 整个模板的变量全为空时不显示任何内容。所以
拼:${pinyin}在查不到读音时不会剩下一个 孤零零的拼:。
写错了会怎样
变量名拼错时会原样显示出来(如 ${pinyn}),这样你一眼就能看到是哪里写错了。
未闭合的 ${ 或 { 按普通文字处理,不会报错也不会崩溃。
关于注音的准确性
多音字的读音由词典决定,不是逐字取最常用读音:
- 拼音方案下,候选自带词条编码,
行长的编码是hang zhang,注音即háng zhǎng。 - 形码方案下,候选没有拼音编码,输入法会枚举各字读音、找出能在拼音词典里查回该词的
那个组合。
行长同样得到háng zhǎng而不是xíng cháng。
有一种情况无法自动判断:同音异调。「好」的 hǎo 和 hào 去掉声调都是 hao,而编码里
不含声调信息,此时显示最常用的那个读音。
注释词库
上面那些变量的内容都由输入法自己算出来。${dict} 变量显示的则是词库里写好的注释——
英汉解释、emoji 名称、字义、专业术语说明。它有两个来源:
- 词库自带的
comment列:自动识别,无需配置 - 单独挂载的注释词库:由你放置文件并添加
输入法不随附独立的注释词库(词典内容多有版权),需要你自己准备文件。
词库自带的注释 0.121 新增
方案使用的词库如果在 columns 里声明了 comment 列,输入法会自动把这一列当作注释源,
不需要另行挂载。外观 → 候选标注 → 自动使用词库自带的注释控制此行为,出厂开启。
朗月拼音随附的错音错字表就是这种形态。拼音方案下输入 zhujiao,候选「主角」右侧显示
zhǔ jué:
name: corrections
columns:
- text
- code
- weight
- comment
...
主角 zhu jiao 0 zhǔ jué识别规则:
- 判据是
columns中显式声明了comment。未声明columns的词库不计入——码表通常是text/code/weight三列,若按注释词库的默认列序读取,会把编码当成注释。 - Rime 主表用
import_tables引入的子表同样逐一检测,各自独立成条。上面那份错音错字表 即由rime_frost.dict.yaml引入。 - 识别出的词库出现在注释词库列表中,标有「自动」。可以启停与排序,但路径和适用方案 由检测得出、不可编辑;适用方案即声明该词库的方案。
- 默认排在手工添加的词库之后。同一词条两处都有注释时取列表靠前者,拖动手柄可调整。
关掉某个自动条目或改变其位置后,配置文件里会写入一条只含 id / auto / enabled 的记录;
路径与适用方案不写入,每次启动重新检测。
词库格式
纯文本,与 Rime 词库同形态:可选的 YAML 头 + ... 分隔行 + 每行一条的制表符分隔正文。
name: en_cn
columns:
- text
- comment
...
apple n. 苹果
banana n. 香蕉columns声明各列含义,必须包含text与comment;省略columns时按[text, comment]处理。- 可选的第三列
code用于同词多义的消歧(见下)。声明了code列但某行没有编码时, 那一行写两列即可。 - 以
#开头的行是注释,空行忽略。 - 没有
...分隔行时,整个文件都当作正文(裸 TSV 也能直接用)。
挂载
把词库文件放进 schemas/comments/(用户数据目录下,没有则新建),再到
外观 → 候选标注 → 注释词库 → 添加词库…:该目录下的 .dict.yaml 会自动列出,
选中后标识、显示名、路径自动填入,只需确认适用方案。缺 comment 列的文件也会列出并
标注,便于排查。
词库放在 comments/ 以外的位置时,用同一弹层中的手动填写路径…。
可挂多个,列表顺序即优先级,拖动左侧手柄可调整。也可以直接写配置(两种方式等价):
[[ui.comment_dicts]]
id = "en_cn"
label = "英汉词典"
path = "comments/en_cn.dict.yaml"
enabled = true
schemas = ["english"]
[[ui.comment_dicts]]
id = "emoji"
label = "Emoji 名称"
path = "comments/emoji.dict.yaml"| 字段 | 含义 |
|---|---|
id | 稳定标识,日志与设置页用来定位,不参与查询 |
label | 显示名 |
path | 相对 schemas/ 目录的路径;你自己目录下的同名文件优先于安装目录 |
enabled | 是否启用,省略视为启用 |
schemas | 限定生效的方案 id,留空 = 全部方案 |
auto | 标记本条是词库自带注释的记录 0.121 新增。为 true 时不写 path 与 schemas,由 id 匹配检测结果 |
schemas 用来避免无谓开销。一份十万条的英汉词典挂在五笔方案上,每次输入都要多查一次
注定查不到的表;写上 schemas = ["english"] 后,中文方案下就不会去查它。
词库本身仍然是启动时一次性加载好的(走内存映射,占用与词库大小基本无关),schemas
过滤发生在每次查询那一步——所以切换方案不会重新加载词库,临时英文这类"方案套方案"
的场景也能正确按 english 分流。
为什么放在 schemas 目录下
整机备份打包的是整个 schemas 目录,注释词库放在它下面就会
自动随备份走。换机器还原后不用再单独复制一遍词库文件。
配好后把 ${dict} 放进模板即可:
comment_template_vertical = "${dict}"
# 或与自动信息并列,优先显示词库释义、没有则退回注音
comment_template_vertical = "${dict|pinyin}"大小写
查询先按原样精确匹配,没有再依次试全小写、首字母大写、全大写。所以词库里写 apple
一条,输入 Apple / APPLE 时同样能查到;反过来词库里的大写缩写 ABC,输入 abc
也能查到。
精确匹配始终优先:词库里同时有 US(美国)和 us(我们)时,两者各显示各的,不会互相顶替。
这条回退只对含拉丁字母的词生效,中文词条不受影响。
同词多义的消歧
同一个词在不同方案下想显示不同注释时,用第三列 code 标注该条属于哪个编码:
columns:
- text
- comment
- code
...
行 háng 行列、行业 tfhh
行 xíng 行走、可以 tfhx查询时优先取编码精确匹配的那条;当前候选的编码对不上(比如拿拼音方案的编码去比对五笔码) 则回退到该词的第一条——跨方案共用一份词库是常态,不该因为编码对不上就什么都不显示。
性能与占用
词库首次加载时会被转成二进制缓存(.wcmt,与词库的 .wdat 放在同一个缓存目录下),之后
每次启动都是内存映射打开,常驻内存与词库大小基本无关,几十万条的大词典也不会让内存变大。
缓存按文件独立,加挂一个新词库不会让其他词库重建;同一个词库被多个方案引用时也只加载一份。
源文件改动后下次加载该词库时会自动重建(重启输入法,或在设置里改动挂载列表), 你不需要手动清理缓存文件。已经卸载的词库,其缓存也会被自动清掉。
分模式设置
高级功能,需手工编辑配置文件
本节的配置项没有图形界面,需要直接编辑 config.toml。
反查类的信息(注音、拆字、词典释义)在大多数时候是干扰,只在特定场景才想看到。 临时英文、临时拼音、网址输入、快捷输入、引导键特殊模式都可以有自己的注释模板, 进入该模式期间覆盖全局设置,退出自动恢复。
[input.temp_english]
comment_template_vertical = "${dict}"
comment_template_horizontal = "${dict}"
[input.temp_pinyin]
comment_template_vertical = "" # 临拼期间不显示任何注释
comment_template_horizontal = ""键名与全局的两个键完全一致,横排竖排也是各配各的。三种状态:
| 写法 | 含义 |
|---|---|
| 不写这个键 | 跟随全局设置(默认) |
| 写一个模板 | 本模式期间改用它 |
写空串 "" | 本模式期间不显示注释 |
「不写」和「写空串」是两回事:前者跟随全局,后者是明确要求不显示。
可用位置:
# config.toml
[input.temp_english] # 临时英文
[input.temp_pinyin] # 临时拼音
[input.url] # 网址输入
[[schema.mix_modes]] # 快捷输入等融合模式(每个实例独立)
# <方案id>.schema.toml 或 schema_overrides/<方案id>.toml
[overlay] # 引导键特殊模式(每个方案独立)推荐用法:把词典释义只留给英文
如果你挂了英汉注释库,最好不要把 ${dict} 写进全局模板,而是只写进临时英文:
[ui.candidate]
comment_template_vertical = "${code_hint|code_rev}" # 中文输入时只显示编码提示
[input.temp_english]
comment_template_vertical = "${dict}" # 打英文时才查词典这样中文输入时输入法根本不会去查注释词库——不是"查得快",而是压根不查。
长度控制
「注释最大字数」超出后截断并加省略号,0 表示不限。
候选窗不支持文字折行,注释过长时会被窗口右边缘裁掉,所以:
- 竖排每行独占一行,空间较宽裕,放注音或字根都合适;
- 横排所有候选共享一行宽度,注释稍长就会明显撑宽窗口。
这也是横排与竖排分开配置的原因。
完整示例
# 五笔用户:竖排看注音和字根,横排只留编码提示
comment_template_vertical = "{〔${chaizi}〕}{ ${pinyin}}"
comment_template_horizontal = "${code_hint}"
# 拼音用户:学五笔,竖排显示该词的五笔编码
comment_template_vertical = "{[${code_rev}]}"
comment_template_horizontal = "${code_hint|code_rev}"
# 忘了某个字的双拼怎么敲时,候选后面就摆着它的双拼码(全拼方案下同样有效)
comment_template_vertical = "${shuangpin}"
# 双拼 + 五笔两种码一起看(需把「编码提示来源」设为 auto)
comment_template_vertical = "${code_hint|code_rev}{ [${shuangpin}]}"
# 悬停提示同款信息(字根 + 编码 + 读音),只对单字有完整效果
comment_template_vertical = "{${chaizi}}{ [${chaizi_code}]}{ ${pinyin}}"
comment_template_horizontal = ""
# 完全关闭注释
comment_template_vertical = ""
comment_template_horizontal = ""配置项参考
对应的配置键、取值范围与默认值见外观配置。
对这篇文档有疑问,或发现内容有误?
欢迎到文档仓库提 issue,写明问题时附上本页链接即可。