快捷输入
分号触发的计算器、日期格式化、农历、拼音子模式与自由字面输入,候选来源与布局配置,以及候选格式的自定义
在中文模式下按 ;(分号)进入快捷输入模式,用于计算、日期格式化等即时输入。触发键可配置,也可以完全禁用。
| 输入 | 功能 | 示例 |
|---|---|---|
; + 数学表达式 | 计算器 | ;1+2*3 → 7 |
; + 日期数字 | 日期格式化(含农历) | ;2026.4.24 → 2026年4月24日、农历三月初八 等多种格式 |
; + 年月数字 | 年月格式化 | ;2026.4 → 2026年4月 等 |
; + 字母 | 进入拼音子模式 | 可在快捷输入内使用拼音输入 |
; + 越界字符 | 转入自由字面输入 0.114 新增 | ;GetTestData() → GetTestData() |
模式内操作:
- 缓冲区非空时,按
a–z选择候选 Space上屏首选,或重复上次输入Enter上屏原文Esc退出
快捷输入本质是一个「混输实例」
它在配置里是 schema.mix_modes 数组的一项(内置实例 id 为 quick_mix)。所以下面的每一项设置都是这个实例独有的——你可以再建别的实例,各配各的触发键与候选来源。手写配置的写法见方案与引擎配置。
设置项
设置工具「输入」页 →「快捷输入」卡片,共六项:
| 选项 | 说明 |
|---|---|
| 快捷输入触发键 | 闲时按触发键进入快捷模式,可多选;全部取消勾选即禁用快捷输入 |
| 快捷候选来源 | 开哪些候选来源,见下 |
| 候选窗布局 | 快捷输入期间候选窗横排还是竖排,退出后自动恢复 |
| 自由输入 | 关闭 / 自动判断 / 始终字面输入,见下 |
; ' 作字面字符 | 自由输入时这两个键不再选第 2 / 3 候选;数字键不受影响 |
| 小数保留位数 | 计算结果最多保留的小数位数(0 表示取整) |
触发键
可选:`、;、'、,、.、/、\、[、]。只收符号键——字母键统一走码表方案配置的「z 键引导功能」。
触发键冲突会实时提示
触发键可能与次选键、临时拼音 / 临时英文触发键冲突。设置工具会实时检测,在页面顶部以琥珀警告条提示。同一个键只能分配给一项功能。
快捷候选来源
关掉的来源不再产出候选。列表顺序即候选优先级,调整顺序需直接编辑配置文件的 members。
| 来源 | 内容 |
|---|---|
| 计算 | 算式求值,如 1+2*3、5^2、(1+2)/4 |
| 日期 / 年月 | 如 12.25 → 今年 12 月 25 日;2026.3 → 2026 年 3 月 |
| 数字 / 金额 | 中文数字、财务大写、千分位;算式结果也会转换 |
| 重复上次上屏 | 仅在刚进入、尚未输入时出现,空格即再上屏一次 |
| 拼音 | 跟随主拼音方案(全拼 / 双拼) |
| 英文 | 英文词库候选 |
前四类候选具体长什么样(日期用哪几种写法、金额带不带「整」)也可以改,见自定义候选格式。
候选窗布局
三档,出厂为强制竖排——日期、算式结果这类候选是长文本,横排放不下。
| 选项 | 含义 |
|---|---|
| 跟随全局 | 用外观设置里的候选窗排列——你改全局,本模式跟着改 |
| 强制竖排 | 本模式期间恒定竖排,与全局无关 |
| 强制横排 | 本模式期间恒定横排 |
「跟随全局」和「强制竖排」的区别只在全局本身就是竖排时才看得出来——前者会跟着你以后对全局的改动走,后者不会。
自由字面输入 0.114 新增
要在 ; 里原样打出 GetTestData()、test_data、all-in-one、12.5GB 这类内容,靠的不是某个切换键——快捷输入里几乎每个可打印键都已双重占用(数字键选词、标点顶屏退出、字母选词),挑不出真正空闲的键。
判据落在输入内容本身:
一个字符若不在当前透镜的合法字符集内,它就不可能是编码,只能是字面内容。
此后一切可打印键都字面入缓冲,候选只有「你打的原文」一条。
透镜
透镜由缓冲内容推导,不是粘滞状态——退格删掉那个越界字符就自然回到原透镜,不需要退出键。
| 透镜 | 何时进入 | 合法字符 |
|---|---|---|
| 文本 | 首字符是字母 | 小写字母(数字键作选词,不入缓冲) |
| 数字 | 首字符是数字 | 数字与算式运算符(含 -) |
| 自由 | 出现越界字符 | 全部可打印字符,一律字面 |
合法字符集按透镜划分而非取并集,- 的归属因此自然分裂:
;1-5—— 首字符是数字走数字透镜,-在算式字符集内,仍是减法 →-4;all-in-one—— 首字符是字母走文本透镜,-越界 → 转自由透镜,得到字面all-in-one
自由透镜下不显示候选序号
该透镜下字母与数字都是字面输入,没有任何键能按序号选候选,画出序号等于骗你去按那个数字、结果把数字打进缓冲,故刻意不渲染。用 Space 或 Enter 上屏。
自由输入不展开短语占位
自由输入的候选不走短语展开:打 $AA 就上屏 $AA。那是你逐键敲进去的字面内容,不是词库候选。
三个取值
| 取值 | 行为 |
|---|---|
| 关闭 | 越界字符按原有规则处理(标点仍顶屏出中文标点、- 仍翻页) |
| 自动判断(默认) | 出现越界字符时自动转入自由透镜 |
| 始终字面输入 | 恒在自由透镜。适合新建一个专做字面输入的实例 |
行为变更:自动判断下逗号不再顶屏
「自动判断」下,;nihao, 的逗号会字面入缓冲,不再顶屏上屏「你好,」。; 本就是为特殊内容而进的模式,要标点可以先按空格上屏再打。不接受这个取舍的话,把这一项设为「关闭」即恢复旧行为。
; ' 作字面字符
' 和 ; 默认是第 2 / 3 候选键,所以 rock'n'roll、don't、for(;;) 这类内容原本打不出来——这两个键在选词分派那一步就被截走了,轮不到上面那条越界判据。越界判据只认得出「字符本身不可能是编码」的键(大写字母、多数符号),对功能键无能为力。
选词键与字面字符是同一批物理键的两种解释,无法两全,只能按「有没有等价替代」分配:
| 键 | 归属 | 理由 |
|---|---|---|
; ' | 字面(默认) | 选第 2 / 3 候选只是数字键 2 / 3 的别名,让位不损失能力 |
数字 1–9 | 始终选词 | 文本透镜唯一的选词通路,让位就一个选词键都不剩 |
关掉这一项即让 ; ' 恢复选词,此时 rock'n'roll 又打不出——这是取舍,不是缺陷。
已知限制:纯小写字母 + 数字打不出
数字键始终是选词键,故 utf8、mp3、x64 这类「纯小写字母 + 数字」的内容里,数字会去选候选。先打一个大写字母或符号切进自由透镜即可,例如 UTF8。
右键调整候选顺序 0.116 新增
不想改配置文件的话,在候选上点右键就能调:
| 菜单项 | 作用 |
|---|---|
| 置顶(同类型内) | 这一类的所有输入都把它排最前 |
| 上移 / 下移 | 微调位置 |
| 隐藏此格式 | 该写法不再出现在候选里 |
| 恢复默认 | 把这一类恢复成出厂状态 |
「同类型内」是说:置顶只在日期、数字、计算各自这一类里生效。类与类之间谁先谁后由快捷候选来源的 members 顺序决定。
调完立即生效,不用重启。
调的是「这种格式」,不是这一次的结果
把「农历五月初五」排到最前,意思是以后所有日期都把农历排最前,不是只对 2026.6.19 这一次。这与候选调整(对某个编码下的某个词置顶)不是一回事。
隐藏之后只能整类恢复
被隐藏的格式不再出现在候选里,也就没法再右键点它。要恢复得用「恢复默认」,这会把该类的顺序调整一并清掉。
右键调整存在用户数据里,与下面的格式表文件互不干扰:你手写的 system.quick.toml 不会被程序改写,右键调整叠加在它之上。
自定义候选格式 0.116 新增
出厂的日期、数字、金额、计算候选是固定的几种写法。要按自己的习惯改——比如日期只留 2026.4.24 一种、千分位用空格、金额单位写「圆」——可以放一份自己的格式表。
这是高级特性,没有设置界面,改的是配置文件。不动它的话行为与从前完全一样。
怎么改
把程序目录里的 data\system.quick.toml 拷到用户配置目录,改完重启输入法服务:
%APPDATA%\WindInput\system.quick.toml你那份会整份生效,程序自带的那份不再参与。所以请在完整副本上改,而不是只写想改的那几条——没写进去的格式就不会出现了。
整份生效意味着不会自动获得新格式
以后版本给出厂表新增的格式,不会出现在你的副本里。想要的话,对照新版自带文件手动补。
一条格式长什么样
[[formats]]
id = 'date.cn' # 标识,同 kind 内唯一
kind = 'date' # 类型:date / year_month / number / calc
text = '$Y年$M月$D日' # 模板
position = 1 # 同类内的顺序,升序kind 决定这条格式在什么输入下生效,只能是这四种之一——它对应程序里的四个解析器,不能自创。
各类之间的先后不在这里改
position 只排同一类内部的顺序。日期、计算、数字这几类之间谁先谁后,由快捷候选来源的 members 顺序决定。
变量
| 类型 | 输入示例 | 可用变量 |
|---|---|---|
date | 12.25、2025.12.25 | $Y 2025、$YYYY 2025、$YY 25、$YC 二〇二五$M 3、$MM 03、$MC 三$D 5、$DD 05、$DC 五农历见下节 |
year_month | 2025.12 | 同上,无 $D 系列,不支持农历 |
number | 123.45 | $N 123.45、$THOU 1,234,567、$DIG 一二三$CNL 一百二十三、$CNU 壹佰贰拾叁$AMT 壹佰贰拾叁元肆角伍分 |
calc | 1+2*3 | $EXPR 1+2*3、$RESULT 7 |
$$ 表示字面的 $;变量后面紧跟字母时用 ${Y} 显式定界。
渲染结果为空的条目不会出现在候选里。例如 $AMT 在小数超过两位时没有角分写法,那一条候选就自动消失,不需要也无法在文件里写条件判断。
农历 0.116 新增
输入日期时,候选里默认带两条农历写法,排在公历五条之后:
;2026.6.19
1. 2026年6月19日
2. 二〇二六年六月十九日
3. 2026-06-19
4. 20260619
5. 2026/06/19
6. 农历五月初五
7. 丙午年五月初五这两条由格式表里的 date.lunar 与 date.lunar_ganzhi 产生,可以照常改写、调序或删掉。可用变量(只有 date 类能用):
| 变量 | 值(以 2026.6.19 为例) |
|---|---|
$LMD | 五月初五 |
$LM / $LD | 五月 / 初五 |
$LY | 丙午(干支年) |
$LZ | 马(生肖) |
$LYN | 2026(农历年数字) |
$LF | 端午节 |
闰月带「闰」字,如 农历闰四月初十。
干支和生肖按农历年算,元旦前后与公历年差一年
农历年从正月初一开始。2026 年 1 月 1 日打出来是「乙巳年冬月十三」——还是蛇年,要到 2 月 17 日春节才转丙午马年。$LYN 与 $Y 因此可能差 1。
支持 1900 年到 2100 年。超出这个范围,农历那两条候选自动消失,公历的照常。
$LF 只在传统节日当天有值(春节、元宵、龙抬头、端午、七夕、中元、中秋、重阳、腊八、小年、除夕),平常日子含 $LF 的那条候选不出现。所以可以写一条「只在节日才冒出来」的格式:
[[formats]]
id = 'date.festival'
kind = 'date'
text = '$LMD $LF' # 平常日子这条不出现
position = 8农历变量在短语里同样可用,取的是当天的农历。例如给短语 nl 配 农历$LMD,打 nl 就得到今天的农历日期。
函数写法
变量表达不了的调整——换千分位分隔符、改货币单位、去掉「整」、补零到指定位数——用函数写法:
text = "{amt(unit='圆', zheng='false')}" # 壹佰贰拾叁圆
text = "{thou(sep=' ')}" # 1 234 567
text = "{thou(group=4)}" # 123,4567
text = "{year()}年{month(pad=2)}月{day(pad=2)}日" # 2025年06月05日不带参数时与对应的变量完全相同:{month()} 就是 $M,{month(pad=2)} 就是 $MM。只为想改的那一处写参数即可。
| 函数 | 参数 | 说明 |
|---|---|---|
year() month() day() | pad= 补零位数cn='true' 出中文数字 | 同 $Y $M $D 系列 |
raw() | — | 所输数字原样 |
cn() | upper='true' 出大写 | 中文数字 |
dig() | — | 逐位中文 |
thou() | sep= 分隔符group= 每组位数 | 千分位 |
amt() | unit= 货币单位zheng='false' 去掉「整」 | 大写金额 |
lunar() | part= 取哪一段 | 农历,默认 md(五月初五)另有 month day ganzhi zodiac year festival full |
expr() result() | — | 算式与结果 |
开关类参数要加引号
写 cn='true' 而不是 cn=true——不加引号会被当成函数调用。参数值写错(如 zheng='nope')时这条候选不会出现,启动日志里有提示。
一条模板里不能混用两种写法,${Y}年{month()}月 不合法,要么全用变量、要么全用函数。函数写法里还可以套用命令栏的文本函数,例如 {concat('¥', thou())}。
写错了会怎样
程序不会因为这个文件出错而打不出字:
| 情况 | 结果 |
|---|---|
| 文件不存在 / 整份语法错误 | 回落出厂格式,行为与没改过一样 |
| 某一条写错(变量名、类型名不认识) | 只丢那一条,其余照常 |
| 函数名或参数写错 | 那一条候选不出现,启动日志里有提示 |
| 农历算不出(超出 1900–2100、日期不存在) | 农历那几条不出现,公历的照常 |
不用进快捷输入也能用的
日期、时间、UUID、时间戳、各类特殊符号有另一条更省事的路——直接在中文输入状态下打编码,不必先按 ;:
date → 2026年4月24日 / 2026-04-24 / …
time → 14:30:00 / 14:30 / …
uuid → 550e8400-e29b-41d4-a716-446655440000
zzbd → 、。·…""【】
zzys → ①②③④⑤这些是系统短语,完整清单(含 zz 系列符号总表与自定义短语可用的日期时间变量)见快捷短语。
Ctrl / Alt 组合键不会被吞 0.114 新增
在快捷输入、临时英文、临时拼音、网址输入、引导键特殊模式这五种模式里,带 Ctrl / Alt 的按键按主输入路径的语义处理:
- 缓冲区非空 —— 放弃整段待输入内容并隐藏候选窗,该按键交还宿主
- 缓冲区为空 —— 直接透传给宿主
0.113 及以前 Ctrl + E 这类组合键会被当成字面 e 插进缓冲区,宿主程序收不到。
想让某个组合键在候选窗显示期间生效
把它配成候选窗快捷键(置顶、删除候选等)即可——那一层在上述守卫之前分派,天然优先,且五种模式一次接通。见按键设置。