标点与符号
中英文标点切换、数字后 / 英文后智能标点、中英文之间自动加空格、自定义映射、连按转换的智能符号,以及括号自动配对与跳出
「输入」页里有三张卡片管标点:字符与标点、智能符号、标点配对。本页逐项说明。
对应配置段是 config.toml 的 input.punct / input.symbol / input.auto_pair,完整键名与默认值见输入行为配置。
字符与标点
除了候选检索范围(说明在上一页),这张卡片剩下的都是标点相关:
| 选项 | 说明 |
|---|---|
| 数字后智能标点 | 数字后的句号输出点号、逗号输出英文逗号,方便输入 IP、小数。勾选启用,「设置」里编辑数字后保持英文的标点(参与的标点集合,默认 .,:) |
| 英文后智能标点 0.131 新增 | 英文单词后的指定标点输出英文形态(Node.js、a/b、snake_case)。勾选启用,「设置」里编辑英文后的英文标点(默认 ./_:@)。见下文 |
| 中英文自动加空格 0.131 新增 | 汉字与英文切换的地方自动补一个空格(中 en 中)。见下文 |
| 中文与数字自动加空格 0.131 新增 | 汉字与数字切换的地方自动补一个空格(共 3 个)。见下文 |
| 自定义标点映射 | 勾选启用,「设置」里按英文半角 / 全角、中文半角 / 全角四态自定义标点替换 |
| / 键输出顿号 0.121 新增 | 中文标点状态下按 / 输出「、」,英文标点状态仍是 /。它没有自己的配置键:打开就是在自定义标点映射表里把 / 那一行的中文两列改成「、」,并顺手打开自定义标点映射;关闭时把这两列恢复默认,但不关自定义标点映射(表里可能还有你别的行)。在表格里手改 / 那一行,这个开关也会跟着变 |
「标点随中英文切换」(切换到中文模式时自动切回中文标点)不在这张卡里,在按键页 → 中英文切换。
中英文标点与全角半角
这两个开关本身不在设置页里,是随手切换的:
Ctrl + .—— 中文标点 ↔ 英文标点。中文标点下输入。,英文标点下输入.Shift + Space—— 全角 ↔ 半角。全角模式下英文字母和数字以全角宽度显示
每次激活输入法时的初始值在默认状态里设。
数字后智能标点
开启后,紧跟在数字后面的句号会输出 . 而不是 。,逗号同理。这样打 192.168.1.1、3.14 不必先切英文标点。
参与的标点集合由「数字后保持英文的标点」决定,点开对话框逐字符编辑,默认 .,:。
英文后智能标点 0.131 新增
开启后,紧跟在英文单词后面的标点按英文形态输出,打 Node.js、a/b、snake_case、user@host 不必先切英文标点。参与的标点由「英文后的英文标点」决定,默认 ./_:@。
- 「英文后」以输入法自己记下的上一笔为准:刚上屏的英文词、刚打进去的字母都算;自己按过空格、回车、方向键,或用鼠标点到别处之后不算。
- 英文词后直接按标点顶屏同样生效:临时英文里打
Node再按.,得到Node.。 - 默认列表不含
,;!?:中文句子里英文词后接中文逗号很常见(「我用 Python,它……」)。 .在列表里的代价是句末英文词后的句号也出.(「我用的是 iPhone.」)。打错时连按两次.换回。(需开智能符号),或从列表里去掉.。
与「数字后智能标点」互相独立,开关和标点列表各一份。
中英文自动加空格 0.131 新增
两个开关,都默认关:
- 中英文自动加空格:
你好Hello世界→你好 Hello 世界。 - 中文与数字自动加空格:
共3个→共 3 个。汉字后直接打的数字(主键盘、小键盘都算)也会补。
规则:
- 只管切换的地方:空格补在切换后那一笔的前面。连续的英文之间不归它管——要英文词与词之间的空格,开英文的上屏后自动加空格。
- 标点前不补:
Hello,、3。不会变成Hello ,。 - 自己打过空格就不补;程序里光标前已经是空格(例如 Markdown 编辑器的排版插件补过)也不补。
- 不确定时宁可不补:按过退格、方向键、回车,切换过窗口,或用鼠标点到别处之后,输入法不知道光标前是什么,下一笔两边都不补。例如
你好退格成你再打Hello,得到你Hello。 - 只处理经输入法打出的内容。英文模式下直接打的字母不处理。
和「上屏后自动加空格」一起用
英文的「上屏后自动加空格」(英文方案、临时英文各一份)是在英文词上屏时立刻补上后面的空格,打完就看得见。之后接中文时光标前已经是空格,不会再多补一个:
| 开关 | 先打「你好」,再打两个英文词,再打「世界」 |
|---|---|
| 只开中英文自动加空格 | 你好 HelloWorld 世界 |
| 两个都开 | 你好 Hello World 世界 |
英文词后要接标点时,打完词直接按标点(标点顶屏),标点紧贴单词:hello,。先选词上屏(已带上空格)再按标点,标点前会隔着那个空格。
按软件关闭
Markdown 编辑器的排版插件、终端、代码编辑器往往自己处理空格,叠加后会出现双空格。在应用兼容设置里给这个软件把「中英间自动空格」设成「禁用」即可(英文词的「上屏后自动加空格」不受影响)。
自定义标点映射
开启后可以逐格重定义每个英文标点键在四种状态下输出什么:英文半角、英文全角、中文半角、中文全角。在表格对话框中编辑。
某个方案可以完全不用这张表
从 0.119 起,单个方案可以声明自己的一份标点映射(方案设置 → 自定义行为 → 自定义标点)。那是整份替换:切到那个方案时,这一页配的行全部不参与,连本页「自定义标点映射」那个勾选也一并被换掉。
所以遇到「这里配了,某个方案下不生效」,先去那个方案的设置里看看有没有勾上自己的表。
智能符号
「智能符号」解决的是中英混排时反复切标点的麻烦:连按两次同一个标点键,就把它换成另一种形态。
三个场景各有独立开关,都默认关:
| 开关 | 生效场景 | 效果 |
|---|---|---|
| 中文标点智能符号 | 中文输入模式 + 中文标点 | 连按两次中文标点 → 转英文形态 |
| 英文标点智能符号 0.113 新增 | 中文输入模式 + 标点切到英文 | 连按两次英文标点 → 转中文形态 |
| 英文模式智能符号 0.113 新增 | 整个输入法切到英文模式 | 连按两次英文标点 → 转中文形态 |
拆成三个是因为场景不同:多数人只需要第一个;写中文正文但标点用英文的人需要第二个;只有在英文里也想偶尔插中文标点的人才需要第三个。
「英文标点智能符号」藏在对话框里
它不单独占一行,而是寄居在「中文符号字符集」的对话框里——两者同属「中文输入模式下的标点行为」。点「中文标点智能符号」那一行的「设置」按钮就能看到。
即便「中文标点智能符号」没勾,这个按钮也照常可点,就是为了让只想用英文那一项的人够得着。
字符集
两个集合,各管各的:
| 设置 | 内容 |
|---|---|
| 中文符号字符集 | 参与「中文标点智能符号」的中文标点集合 |
| 英文符号字符集 | 「英文标点智能符号」与「英文模式智能符号」共用。填按键本身的英文标点(. 而非 。),默认 .,?!:; |
英文符号字符集里不要放括号引号
英文模式下这些键被输入法接管后,自动配对改由引擎处理,而输入法 DLL 的跳出栈是空的,Tab 跳出配对会失效。
「英文模式智能符号」影响面较大
开启后输入法会接管「英文符号字符集」里的所有键——这些键原本在英文半角下直接交给应用。这是它默认关闭的原因。
上屏方案与时限
这两项是三个场景共用的公共参数,所以不随任何单个开关置灰:
| 选项 | 说明 |
|---|---|
| 智能符号上屏方案 | 第一次按键的呈现方式,见下 |
| 智能符号时限 | 两次按键的最大间隔(100–2000 ms) |
| 上屏方案 | 说明 |
|---|---|
| 直接替换(推荐) | 第一次按键直接上屏符号,再次按键删改为另一形态。所见即所得、没有中间预览态,体感更好;少数应用中兼容性略逊 |
| 组合态预览(兼容性好) | 第一次按键先以预览态显示,超时或再次按键才真正定型,全程不做删改。适合在「直接替换」下表现异常的应用 |
标点配对
输入左括号类标点时自动补出右标点,光标停在中间。中文与英文各有独立开关和字符集。
| 选项 | 说明 |
|---|---|
| 中文标点自动配对 | 开关 |
| 中文配对字符 | 勾选参与配对的中文标点对 |
| 英文标点自动配对 | 英文模式或英文标点下自动配对 |
| 英文配对字符 | 勾选参与配对的英文括号对 |
| 配对跳出键 | 见下 |
可选的中文标点对:()、【】、{}、《》、〈〉、「」、『』、""、''。
可选的英文括号对:()、[]、{}、""、''。
macOS 需要先授权「辅助功能」
macOS 上把光标送回两个标点中间,靠的是向前台应用发送方向键,这需要系统的辅助功能权限。未授权时配对功能静默降级:右标点照常补出,但光标停在它后面,跳出键也不会移动光标。
到 系统设置 → 隐私与安全性 → 辅助功能 打开「清风输入法」即可,详见 macOS 版 · 授权辅助功能。
跳出配对
自动补出右标点后,输入法会记住「光标右边还有一个待跳出的右标点」。按跳出键即可让光标越过它,而不是再插入一个。
| 跳出键 | 说明 |
|---|---|
| 右符号本身 | 你再打一次那个右标点,就当作「跳出」。误触发机会最小——它要求你打的右标点与记录的那一个正好对应,不对应就当普通标点输出 |
| Tab 制表键 | 不看具体是哪一对,只要配对状态还在就跳出 |
| Enter 回车键 | 同上 |
可多选,留空则不启用跳出。
左右同形的配对不支持「右符号本身」
引号这类左右一样的符号(""、''),无法区分你是要跳出还是要嵌套新的一对,只能用 Tab / Enter 跳出。
配对状态什么时候清除
- 按跳出键跳出后(该层配对结束)
- 输入框失去焦点、切换到别的窗口或程序
- 正在输入的内容被宿主程序强制结束
切换中英文不会清除,因此在括号里切到英文打完再切回中文,跳出键依然有效。
用退格或鼠标改变光标后,跳出键可能多移动一格
输入法只能感知自己插入的内容,无法得知你用退格删掉了自动补出的右标点,也无法得知你用鼠标或方向键把光标移到了别处。这种情况下「配对状态」仍然存在,此时按跳出键会让光标向右多移动一格。
再输入一次左标点、切换一次窗口焦点,或者停下来不输入约两分钟,即可让状态复位。用「右符号本身」作跳出键时误触发的机会最小。
多字符配对
配对表只收单个标点。想要多字符的组合(<!-- -->、""" """、<div> </div> 等),用命令短语的 ime.pair:它上屏后同样会建立配对状态,用同一套跳出键越过右段,还支持嵌套的分级跳出。
注意 ime.pair 受本节的总开关约束(中文模式看中文配对、英文模式看英文配对),且只能用 Tab / Enter 跳出——「右符号本身」那条路径只认单个标点按键。
对这篇文档有疑问,或发现内容有误?
欢迎到文档仓库提 issue,写明问题时附上本页链接即可。