个性化

候选注释

用模板配置候选词右侧灰字显示的内容——编码提示、带声调注音、拆字字根,横排与竖排可分别设置

候选注释是候选词右侧的那行灰字。默认显示编码提示(如五笔前缀候选的剩余编码),你可以把它 改成注音、拆字字根,或几种信息的组合。

这是进阶定制

默认配置已适合大多数人。本页面向的是想在候选窗里看到注音或字根的用户——尤其是形码方案 (打得出但不确定怎么读)与正在学习编码的用户。

设置位置:设置工具 →「外观」→ 候选窗口 →「候选注释」→ 设置

快速上手

想要的效果竖排注释填
只显示编码提示(默认)${code_hint|code}
显示带声调注音${pinyin}
注音加括号{(${pinyin})}
单字显示字根,词组显示注音{〔${chaizi}〕}{${pinyin}}
编码 + 注音${code_hint|code}{ (${pinyin})}
悬停提示同款(字根 + 编码 + 读音){${chaizi}}{ [${chaizi_code}]}{ ${pinyin}}

横排注释建议留 ${code_hint|code} 或干脆留空:横排候选窗的宽度由所有候选共享,放注音或 字根很容易把窗口撑得很宽。

变量

变量内容示例
${code_hint}引擎给出的编码提示:形码前缀候选的剩余编码、混输的来源标记kao
${code}整词在主码表里的实际编码(仅拼音来源候选)wqvb
${pinyin}带声调注音nǐ hǎo
${chaizi}拆字字根,仅单字候选亻尔
${chaizi_code}该字在拆字库里的编码,仅单字候选wq
${chaizi_all}拆字字根,不限字数(逐字拼接)亻尔 女子
${dict}挂载的注释词库里该词的注释apple🍎 红苹果

${chaizi} 限单字是有意的:拆字回答的是「这个由哪些字根构成」,词组的字根串既难读、 又会把候选行推得很宽。确实需要词组字根时用 ${chaizi_all}

${code} 只对拼音来源的候选有值——形码方案下候选的编码就是你自己打的,再显示一遍是冗余。

变量参数

${chaizi_all} 支持用冒号指定逐字分隔符:

写法结果
${chaizi_all}亻尔 女子
${chaizi_all:/}亻尔/女子
${chaizi_all: · }亻尔 · 女子
${chaizi_all:}亻尔女子

冒号后的内容原样使用,空格不会被忽略

语法

${a|b} 取首个非空

按顺序取第一个有内容的变量。默认模板 ${code_hint|code} 的意思是:优先用引擎给的编码提示, 没有就退回主码表反查码。

{ … } 可选段

段内的变量全部为空时,整段(包括里面的括号、标签文字)一起消失。

这是配装饰字符的关键。对比:

模板拼音有值拼音为空
${code} (${pinyin})wqvb (nǐ hǎo)wqvb () ← 空括号
${code}{ (${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ǎohào 去掉声调都是 hao,而编码里 不含声调信息,此时显示最常用的那个读音。

注释词库

上面那些变量的内容都由输入法自己算出来。如果你想显示的是词典式的释义——英汉解释、 emoji 名称、字义、专业术语说明——就需要挂一份注释词库,再用 ${dict} 变量把它显示出来。

输入法不随附任何注释词库(词典内容多有版权),需要你自己准备文件。

词库格式

纯文本,与 Rime 词库同形态:可选的 YAML 头 + ... 分隔行 + 每行一条的制表符分隔正文。

name: en_cn
columns:
  - text
  - comment
...
apple	n. 苹果
banana	n. 香蕉
  • columns 声明各列含义,必须包含 textcomment;省略 columns 时按 [text, comment] 处理。
  • 可选的第三列 code 用于同词多义的消歧(见下)。声明了 code 列但某行没有编码时, 那一行写两列即可。
  • # 开头的行是注释,空行忽略。
  • 没有 ... 分隔行时,整个文件都当作正文(裸 TSV 也能直接用)。

挂载

把词库文件放进 schemas/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,留空 = 全部方案

schemas 用来避免无谓开销。一份十万条的英汉词典挂在五笔方案上,每次输入都要多查一次 注定查不到的表;写上 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 = ""

键名与全局的两个键完全一致,横排竖排也是各配各的。三种状态:

写法含义
不写这个键跟随全局设置(默认)
写一个模板本模式期间改用它
写空串 ""本模式期间不显示注释

「不写」和「写空串」是两回事:前者跟随全局,后者是明确要求不显示。

可用位置:

[input.temp_english]      # 临时英文
[input.temp_pinyin]       # 临时拼音
[input.url]               # 网址输入
[[schema.mix_modes]]      # 快捷输入等融合模式(每个实例独立)
[[schema.special_modes]]  # 引导键特殊模式(每个实例独立)

推荐用法:把词典释义只留给英文

如果你挂了英汉注释库,最好不要${dict} 写进全局模板,而是只写进临时英文:

[ui.candidate]
comment_template_vertical = "${code_hint|code}"    # 中文输入时只显示编码提示

[input.temp_english]
comment_template_vertical = "${dict}"              # 打英文时才查词典

这样中文输入时输入法根本不会去查注释词库——不是"查得快",而是压根不查。

长度控制

「注释最大字数」超出后截断并加省略号,0 表示不限。

候选窗不支持文字折行,注释过长时会被窗口右边缘裁掉,所以:

  • 竖排每行独占一行,空间较宽裕,放注音或字根都合适;
  • 横排所有候选共享一行宽度,注释稍长就会明显撑宽窗口。

这也是横排与竖排分开配置的原因。

完整示例

# 五笔用户:竖排看注音和字根,横排只留编码提示
comment_template_vertical   = "{〔${chaizi}〕}{ ${pinyin}}"
comment_template_horizontal = "${code_hint}"

# 拼音用户:学五笔,竖排显示该词的五笔编码
comment_template_vertical   = "{[${code}]}"
comment_template_horizontal = "${code_hint|code}"

# 悬停提示同款信息(字根 + 编码 + 读音),只对单字有完整效果
comment_template_vertical   = "{${chaizi}}{ [${chaizi_code}]}{ ${pinyin}}"
comment_template_horizontal = ""

# 完全关闭注释
comment_template_vertical   = ""
comment_template_horizontal = ""

配置项参考

对应的配置键、取值范围与默认值见外观配置

本页目录