快捷短语
系统短语与自定义短语的管理、触发方式、权重与 position,以及 zz 系列符号与日期时间、农历变量
短语让你用一个简短编码上屏一段常用文本:邮箱、地址、签名、常用回复等。短语是全局共享的,不区分方案,写入后跨所有输入方案立即生效,无需编辑方案文件。
管理位置:设置工具 →「词库」页 → 顶部「词库类型」选择快捷短语。分「系统短语」与「用户短语」两个子标签。
系统短语
内置短语,只读,但可以逐条开关:
| 操作 | 说明 |
|---|---|
| 启用开关 | 逐条开启或关闭 |
| 查看 | 弹窗查看完整编码与内容(可复制) |
| 恢复默认 | 重置所有系统短语的启用状态 |
系统预置的短语分三类,都可以在任何中文输入状态下直接打编码触发(短语候选追加在当前方案候选之后)。
日期时间类
| 编码 | 功能 | 示例 |
|---|---|---|
date | 日期(多格式) | 2026年4月24日 / 2026-04-24 / 2026/04/24 等 |
time | 时间(多格式) | 14:30:00 / 14:30 / 14时30分00秒 |
datm | 日期时间 | 2026-04-24 14:30:00 等 |
week | 星期 | 星期四 / 周四 等 |
uuid | 生成 UUID | 550e8400-e29b-41d4-a716-446655440000 |
tmts | 时间戳 | 1706000000(秒)/ 1706000000000(毫秒) |
zzrq | 快速日期(多格式) | |
zzsj | 快速日期时间(多格式) | |
zzxq | 快速星期(含日期) |
zz 系列符号
输入 zz 前缀 + 分类缩写,可快速输入各类特殊符号:
| 编码 | 分类 | 示例 |
|---|---|---|
zzbd | 标点符号 | 、。·…""【】 |
zzsz | 圈数数字 | ❶❷❸❹❺ |
zzzm | 圈字母 | ⓐⓑⓒⓓⓔ |
zzpp | 中文偏旁 | 亻彳讠饣艹 |
zzdw | 单位符号 | ㎎㎏㎜㎝㎞ |
zzpy | 拼音声调 | āáǎàōóǒò |
zzds | 点号数字 | ⒈⒉⒊⒋⒌ |
zzks | 括号数字 | ⑴⑵⑶⑷⑸ |
zzys | 圆圈数字 | ①②③④⑤ |
zzzs | 中文数字 | ㈠㈡㈢㈣㈤ |
zzhb | 货币符号 | $¢£¥¤ |
zzjt | 箭头符号 | →↑←↓↖↗ |
zzde | 大写俄文 | АБВГДЕ |
zzxe | 小写俄文 | абвгдеж |
zzdl | 大写罗马 | ⅠⅡⅢⅣⅤ |
zzxl | 小写罗马 | ⅰⅱⅲⅳⅴ |
zzdx | 大写希腊 | ΑΒΓΔΕΖ |
zzxx | 小写希腊 | αβγδεζ |
zzpj | 平假名 | ぁあぃいぅう |
zzjp | 片假名 | ァアィイゥウェ |
zzsx | 数学符号 | ±×÷∈∏∑√∞ |
zzsb | 上标 | ¹²³⁴⁵ⁿ |
zzxb | 下标 | ₁₂₃₄₅ |
zzts | 特殊符号 | ℃°‰♂♀§№ |
zzzy | 注音符号 | ㄅㄆㄇㄈㄉ |
打前缀 zz 会先看到分类导航条目,选中后自动补全到完整码进入二级选择;直接打完整码(如 zzbd)则展开为该组的字符候选。
co 系列命令
以 co 开头的一批示例命令短语——选中后执行动作而非上屏文本(打开网址、启动程序、切换输入法状态等)。可在系统短语列表里浏览、开关或仿写。
用户短语
自定义短语,支持完整管理:
| 操作 | 说明 |
|---|---|
| 添加 / 编辑 | 填写编码(缩写)、短语内容(支持多行)、权重 |
| 启用开关 | 逐条开启或关闭 |
| 删除 / 清空 | 移除条目 |
| 导入 / 导出 | WindDict YAML(.wdict.yaml)格式,见导入与导出 |
触发方式
短语的编码就是你为它设定的缩写。在中文输入状态下键入该编码,短语内容会作为候选出现,按空格或数字键即可上屏。例如把编码 dz 绑定到你的地址,输入 dz 即可选出整段地址。
编码可以与方案的正常编码共存:短语候选与码表 / 拼音候选一同排序,按各自权重呈现。给短语选一个不易与自然词碰撞的编码(例如较长的字母组合),能让它更稳定地出现在你想要的位置。
临时拼音下不查快捷短语
进入临时拼音模式后不查询快捷短语层,输 zzbd 得到的是拼音候选而非字符组导航。但词库条目内嵌的 $ 语法在临拼下仍会正常展开与执行。
模板变量
在自定义短语中可使用以下变量,支持 $var 和 ${var} 两种语法,$$ 转义为 $。这是日期时间类的完整清单:
| 变量 | 说明 | 变量 | 说明 |
|---|---|---|---|
$Y | 四位年份 | $MM | 两位月份 |
$M | 月份(不补零) | $DD | 两位日期 |
$D | 日期(不补零) | $HH | 两位小时 |
$mm | 两位分钟 | $ss | 两位秒 |
$WC | 星期(中文,如「日」) | $YC | 中文年份(如「二〇二六」) |
$MC | 中文月份 | $DC | 中文日期 |
$ts | 秒级时间戳 | $tsms | 毫秒时间戳 |
农历 0.116 新增,取的是当天的农历,与快捷输入的农历候选同一套:
| 变量 | 说明 | 变量 | 说明 |
|---|---|---|---|
$LMD | 农历月日(五月初五) | $LM | 农历月(五月) |
$LD | 农历日(初五) | $LY | 干支年(丙午) |
$LZ | 生肖(马) | $LYN | 农历年数字(2026) |
$LF | 传统节日(端午节) |
例如短语 nl 配 农历$LMD,打 nl 就得到今天的农历日期。
$LF 只在节日当天有值
非节日时含 $LF 的短语整条不出现(同下面「变量取不到值就整条丢弃」的规则)。所以 今天是$LF 这样的短语只会在春节、端午、中秋这些日子冒出来,平时不打扰。
干支和生肖按农历年算:元旦到春节之间仍属上一个生肖年。
此外还有两类非日期时间变量:
| 变量 | 说明 |
|---|---|
$uuid | 随机 UUID(v4),带横杠小写;要别的格式用命令语法 {uuid("n")} |
${APP_DIR} / ${USER_DATA} / ${LOCAL_DATA} | 内部目录变量,与命令直通车同源 |
变量名写错会让整条短语消失
遇到无法识别的变量名时,该短语条目会被整条丢弃,不会出现在候选里,也不会报错。若自定义短语突然不出候选,先检查变量名拼写。
变量名只吃 ASCII 字母,所以「价格 $5」这类 $ 后接非字母的写法会原样保留,不受影响。
需要比日期时间更复杂的动态内容(打开网址、调用命令行、读剪贴板、算式求值),用命令直通车的函数语法。
短语权重
添加 / 编辑对话框中的权重字段决定短语在同编码候选中的排序,默认 1000。在码表方案下,提高权重可让短语在同编码候选中靠前。
系统种子与设置页的默认权重不同
system.phrases.toml 里省略 weight 时取 1000;而通过设置页新增短语时,若未填写权重,后端兜底值是 1——远低于系统短语。新增短语时请显式填写权重,不要依赖默认值。
position:仅在权重相同时起作用
短语除权重外还有一个 position 字段,缺省为 0。它的作用范围非常窄,用错方向是常见误解:
精确语义
同一编码下的多条短语,先按权重降序排列;只有当权重完全相同时,才按 position 升序 决定先后。
权重不同时,position 完全不起作用——它是纯粹的同权 tie-break,不是优先级字段。
# 同为 code = "dz",权重相同 → 按 position 升序
dz weight=1000 position=0 → 北京市朝阳区…… ← 排在前
dz weight=1000 position=1 → 上海市浦东新区……
# 权重不同 → position 被忽略
dz weight=1000 position=9 → 北京市朝阳区…… ← 仍排在前
dz weight=500 position=0 → 上海市浦东新区……还有三条边界需要知道:
- 跨编码、跨来源无效 —— position 只在同一编码的短语内部生效。短语与码表候选、拼音候选之间的先后由权重等因素决定,position 不参与
- 前缀导航列表不看 position —— 输入
zz、co这类前缀列举出的候选,按「权重降序、完整编码字母序升序」排列,position 无效 - 与候选置顶的 position 不是一回事 —— 设置页候选调整里的置顶位置也叫 position,那是页内插入下标,语义完全不同,别混用
拼音方案下的置顶
拼音候选权重是百万级,单纯把短语权重调到几千不足以稳定压过常用拼音词。更可靠的做法是使用一个不易与自然词碰撞的精确编码(例如 4 字母的 cobd),让短语只在该精确编码下出现。
字符组
短语内容支持字符组语法,把一组字符打包在同一个编码下。例如:
$AA("标点", "、。·…")该组内所有字符候选的权重都等于这条短语条目的权重值,组内字符的相对顺序由字符串顺序决定,与权重无关。zz 系列符号就是这样实现的。
字符组、数组、命令候选、模板短语等更进阶的短语形态详见命令直通车。
短语不影响码表生僻字过滤
在码表方案的生僻字过滤路径下,短语永远保留、也不计入「同编码下是否有常用字」的判定。因此配置短语(例如 dz = 我的地址)不会副作用地改变同编码码表候选的过滤行为。
短语存储在哪里
所有短语——系统预置的和你自建的——统一存储在用户数据目录的 userdata.redb 中,同一张表里靠一个「是否系统短语」标记区分。
系统短语的种子是安装目录下的 data\system.phrases.toml(TOML 格式,不是 YAML)。启动时会比对种子文件的内容哈希,发现变化才同步进库。
在 %APPDATA%\WindInput\ 放一份同名文件可以整份替换这个种子(见同结构覆盖机制),适合成套定制系统短语。但它只决定「初始有哪些系统短语」——日常添加和修改短语一律通过设置工具完成,数据存在库里,不会回写这个文件。
同步遵循「归属先到先得」,用户数据永不被覆盖:
| 情形 | 结果 |
|---|---|
| 种子里有、库里是系统条目 | 更新权重与 position,保留你的启用开关 |
| 种子里有、库里已是用户条目 | 整条跳过,不动 |
| 库里是系统条目但种子已删除 | 从库中删除 |
| 用户新增的条目 | 系统同步永不删除、永不改写 |
所以「覆盖系统短语」的正确做法有三种:关掉那条系统短语;用同编码但不同内容新增一条更高权重的用户短语;或直接编辑那条系统短语的权重(会就地改写系统条目本身)。