设置说明外观设置

候选注释

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

v0.122.0

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

这是进阶定制

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

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

快速上手

想要的效果竖排注释填
只显示编码提示(默认)${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} 不要求你正在用双拼。用哪份布局按这个顺序找:

  1. 当前方案本身是双拼 → 用它的布局
  2. 否则看「主拼音方案」(schema.primary_pinyin)是不是双拼 → 用它的
  3. 否则用方案列表里第一个双拼方案
  4. 一个双拼方案都没装 → 这一项为空

所以全拼用户只要装了双拼方案,候选旁边就能挂着对应的双拼码——想从全拼转双拼时, 这就是一份跟着你打字走的对照表。

出厂模板用 ${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ǎohà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 声明各列含义,必须包含 textcomment;省略 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 时不写 pathschemas,由 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,写明问题时附上本页链接即可。

去提 issue →

本页目录