原创 砺心 2025-06-06 20:00 四川
更符合中文语境下的输入优化工具与脚本
阿虚同学
读完需要
10
分钟
速读仅需 6 分钟
最近很多粉丝反馈收不到公众号更新,解决办法:
作为一个码了快上千万字的博主,今天想来分享下我最近在折腾输入法切换、中英文标点符号输入相关问题上的一些心得
仅百度输入法统计就有800W字
加上这些年用过的其他输入法/语音输入,1000W字肯定是有的
1
中文语境下的输入痛点
先来说一下阿虚究竟在折腾研究什么东西?
简单来说就是中文语境下,使用输入法遇到的一些不爽:
比如,我本来在笔记软件里面打中文打的好好的,突然想切到微信里搜点东西,结果输入法莫名其妙就会变成英文的
类似情况还有反过来,在 VsCode 里面敲代码的时候,切到浏览器搜点东西,要手动切成中文,搜完了回到 VsCode 又得再手动切成英文,反反复复很是麻烦...
更恶心一点的是,可能不少 WIN11 用户都遇到过的 Alt+Tab 切换一下窗口就导致输入法自动切为英文的 BUG
再比如,阿虚作为 Markdown 用户,想要输入一个引用符号,我需要进行 ① Shift ② Shift+> ③ 空格 ④ Shift 这么多操作,才能完成输入。要是碰上忘记切英文了,我还得先按退格删掉错输的符号,很是麻烦
又比如,为了更美观、直观:减号、加号、正斜杠这3符号我通常都会用全角模式,但每次输入都需要我先按 Shift+Space 切换到全角模式,输完一个符号还得又切回来,不然会影响数字、空格等符号的输入,又显得的很麻烦
▲全角符号间距更开,显然更直观
还有就是虽然用 Shift 切换中英文输入符号是很简单,但是因为按下 Capslock 也能切换到英文模式输入英文符号,有时候操作快了就会出现误切换,后续跟着想输中文就变成了大写字母上屏,又得去按退格删除……
总之,阿虚反复研究、测试了不少工具之后,最后选择的方案是 InputTip+AutoHotkey 脚本
2
InputTip
我体验过「统一使用英文标点符号,加空格模拟中文符号」这套方案,也尝试了「IME-booster-FinalD」这种根据上文来自动切换输入法的工具
但最终,我觉得最理想的方案还是 KBLAutoSwitchAHK这类——可以「指定某个窗口默认为中文或者英文输入法」然后进行自动切换的工具体验更好
不过各位也看到上图,KBLAutoSwitchAHK 已经有 3 年没更新了,几经周转之后才让我发现了同样基于AutoHotkey 的开源项目 InputTip——几乎完美的继承了 KBLAutoSwitchAHK 的衣钵
软件下载可以访问 InputTip 官网:inputtip.abgox.com
至于阿虚为啥要说几经周转?原因就怪在作者在官网对其软件的核心介绍是「一个输入法状态提示工具」,以至于很多介绍文章在标题里也只提了这一点,导致我虽然瞟见过很多次,但都没点进去了解过,差点就错过了😅
事实上 InputTip 的功能可远不止此!直接来说软件最核心的三大功能
2.1
自动切换&光标提示
右键软件图标 ⇨ 指定窗口自动切换状态,在这里你就可以手动设置你「常用软件」窗口的「默认输入法」状态!
增删窗口的方法也很简单,打开软件的情况下,在列表里面双击对应的进程,然后选择你要指定的默认输入法状态就行(如果进程列表里面没有,先点击左下角的刷新此界面,或者右下角的显示更多进程),删除修改后续也是双击进程名再选择即可
当你设置好之后,就能轻松实现下图这样无缝自动化切换输入法了!
并且从上图大家可以看到,InputTip 默认还会替换你的鼠标样式,并且在光标位置增加一个▼提示,借此来快捷显示你的当前输入法状态(默认中文红色,英文蓝色,大写状态绿色)——就不必每次都去瞟屏幕右下角或者键盘了
如果你不满意默认的鼠标样式,右键软件图标 ⇨ 更改配置 ⇨ 鼠标样式 ⇨ 下载鼠标样式扩展包,作者还提供了非常多的鼠标样式以供选择
不过,需要注意,如果想要自动切换生效。你还需要右键软件图标 ⇨ 设置输入法模式,手动指定你的输入法切换方式!
2.2
固定切换
而针对 Shift 与 CapsLock 高频使用,容易误切换的问题,你可以右键软件图标 ⇨ 设置状态切换快捷键
在这里,你可以设置固定左 Shift 只会切换为中文输入法,右 Shift 只会切换为英文输入法,重复按左 Shift 将不会切换到中文以外的输入法!处于英文模式的大写锁定状态下,也能一键切回中文!非常方便
3
AHK输入优化脚本
InputTip 基本解决输入法切换问题,但对于中英文符号输入,还是没完全解决!阿虚认为:
“最好的输入体验
一定是尽量「没有输入法切换」动作的
”
为啥 Windows 会有自动切换输入法这个 BUG?网上有人吐槽就是因为国外程序员不能理解中国人为啥要切换输入法——毕竟他们可能就没有切换输入法的场景
然后就要谈到写这篇文章另一半的原因,其实是阿虚星球里面有个粉丝在提问,这里他给到了一期B站视频
3.1
双击空格转符号
在他提到的视频的评论区,我发现了一位网友分享的非常不错的中英文符号切换输入方案,即通过 AHK 脚本来实现英文符号+2个空格=中文符号,回复者还很贴心的在下面直接给出了 AHK 源码
↕上下滑动查看更多↕
不过在中文语境下,他这个操作显然有点儿南辕北辙,并且他给出的代码有很多兼容性的问题,比如在微信、Everything 等软件上会无效
阿虚研究了挺长一段时间,终于成功在他源码的基础上解决了兼容性问题,并且改成了中文符号+2个空格=英文符号
脚本可以实现输入句号、逗号、问号、顿号、分号、冒号、引号、括号、书名号、感叹号、斜杠、重音号后加 2 个空格键转换为对应英文符号
▲就像这样
有需要的粉丝,可以后续文章置顶留言获取,或者在公众号后台回复关键词「输入优化」来获取脚本
当然,光是这样并没有解决阿虚的输入需求,实际中文语境中很多英文符号我几乎都不会用到,所以针对一些常用的特殊符号,我又改了一下脚本:
【 加空格双击转换为 「
】加空格双击转换为 」
、 加空格双击转换为全角 /
¥ 加空格双击转换为全角 $
*
加空格双击转换为全角 ×-
加空格双击转换为全角 -+
加空格双击转换为全角 +=
加空格双击转换为全角 =~
加空格双击转换为全角 ~▲大概就像这样
一样的,有需要的粉丝,可以后续文章置顶留言获取,或者在公众号后台回复关键词「输入优化」来获取脚本
3.2
重复双击转符号
虽然上述方案用起来没啥大毛病,挺方便的。但阿虚使用了一段时间,还是觉得使用起来有点儿别扭,一直说不出来什么原因
然后我还是在那个视频的评论区,还发现了另一位网友提到的方案:单击输入中文符号,双击输入英文符号
虽然这位网友就没给出源码,但阿虚对这个方案饶有兴趣,甚至感觉可能比双击空格的方案更好,所以花了3、4天时间测试排错,终于让我利用 AHK 手搓了一份可用脚本出来
而有了这个方案的体验对比,我仔细分析了一下,终于是发现「空格双击方案」为啥会让我觉得别扭了:
对于[,][。]一类单击上屏的符号还好,体验差不太多
但是对于[:][“]一类组合上屏的符号,体验就差很多了
双击空格方案,需要用到 3 根不同手指,每次输组合符号我都得停顿一下,去思考下一步我得换用大拇指双击空格才能转换
重复双击方案,仅需 2 根手指,在正确输入想要的符号之前,手指不需要改变位置,只需要思考是不是需要转换即可
简单来说:双击空格方案,比较适合打字比较慢的人;而重复双击方案,适合打字比较快的人
虽然操作上是这样,但经过我一段时间使用,还是发现了重复双击方案一些使用上的问题:
比如之前的脚本通过双击[。]来转换为[.],但是[.>]这个键又正好是我常用的输入法翻页键,这就导致如果我翻页比较快的话,就会出现错误输入
又比如 2 个 ~ 符号在 Markdown 里面是删除线标注,也不兼容
再比如 2 个 * 符号在 Markdown 里面是加粗标注,有时候不用 Ctrl+B 手动输入的话,也容易不兼容 Markdown 书写
还比如 = 键,部分编程语言中会用到 == 来表示左右相等,双击方案用起来就不太流畅
难道还是只有弃用双击方案了吗?
盯着我写好的代码,阿虚发现了问题所在:
之前的脚本默认是 1 秒内连续点击,就会触发自动转换
之所以这样写,是为了解决实际输入情况下的痛点
即当你快速输入内容的情况下,很容易忘记去切换输入法,比如我在浏览器地址栏输入必应网址,很容易就输成了[bing。com]
等你发现错输入成了中文字符[。]的时候符号已经上屏了
所以脚本设置成 1 秒内再次点击就可以进行转换,为的时候留给留给自己 1 秒钟的反应时间,要不要进行转换
所以对于翻页用到了[.>]键这种特殊情况,解决办法其实很简单:
只需要把触发时间缩短就行了(比如我改到 200 毫秒)
这样就必须在极短的时间内连续按下[.>]键,才能成功转换
因为正常情况下,看完这页输入法的候选词,然后进行翻页的时间,都会超过 200 毫秒,所以就不会和翻页功能冲突了
我把这项修改应用到了[。][`]这几个符号上,对于包含特殊符号转换的脚本还应用到了[~][=][*][/]这几个符号上
重复双击方案的代码还是分成两份,一个就是单纯的双击把中文符号转英文,一个还是修改了一些阿虚常用的特殊符号
动图不太好展示效果,总之有需要的粉丝,可以后续文章置顶留言获取,或者在公众号后台回复关键词「输入优化」来获取脚本
3.3
双击空格+重复双击
当然重复双击这个方案阿虚也用了一段时间,个人感觉的确比「空格双击方案」更流畅:
但还有一类情况,阿虚半天没想到办法解决,即类似[/?]键:
中文情况下我想快速输入全角正斜杠[/] ⇨ 文件命名中无法使用半角[/]但可以用全角[/]
英文情况下我又想快速输入双正斜杠[//] ⇨ 网址输入与编程中常用符号
之前就一直没想通怎么处理这个问题
直到有一天晚上我突然拍头想,对哦!我完全可以两种方案一起使用啊!又不冲突😂
于是乎阿虚又搞了一个两种方案融合的版本,还是分成两份,一个就是单纯的双击把中文符号转英文,一个还是修改了一些阿虚常用的特殊符号
有需要的粉丝,可以后续文章置顶留言获取,或者在公众号后台回复关键词「输入优化」来获取脚本
3.4
阿虚自用脚本
当然实际上我自己使用的话,还是更喜欢双击方案,用起来感觉更顺手。少部分符号才结合了空格双击方案,我自己用的脚本转换规则如下:
200毫秒内双击 。转换为 .
200毫秒内双击 · 转换为 `
200毫秒内双击 ~ 转换为全角 ~
200毫秒内双击 、 转换为全角 ,加空格双击则转换为//
200毫秒内双击 * 转换为全角 ×
200毫秒内双击 = 转换为全角 =
1秒内双击 【 转换为 「,加空格双击则转换为 [
1秒内双击 】转换为 」,加空格双击则转换为 ]
1秒内双击 ¥ 转换为全角 $
1秒内双击 - 转换为全角 -
1秒内双击 + 转换为全角 +
1秒内双击 ,转换为 ,
1秒内双击 ?转换为 ?
1秒内双击 ;转换为 ;
1秒内双击 :转换为 :
1秒内双击 “ 或 ” 转换为 "
1秒内双击 ’ 转换为 '
1秒内双击《 转换为 <
1秒内双击 》转换为 >
1秒内双击{ 转换为 {
1秒内双击 }转换为 }
1秒内双击 !转换为 !
1秒内双击 、转换为 \
正因为有了上述经验,我就发现,诶!双击空格转换还可以用来转一些我常用的数字符号呀!
于是乎,我就在原本重复双击的版本上,新增了如下功能:
1、后加一个空格即可转换为⒈,⒈-⒛ 都可以这样来快速转换
1 后加 2 个空格即可转换为⑴ ,注意⑴后面有个空格),⑴-⒇ 都可以这样来快速转换
固定修改极为不常用的重音符号 · 为 `,后者在 Markdown 语法中作为代码标记符号,对于我来说还是很常用的
▲效果如图
而为了让输入起来更加舒服,在上述功能以外,阿虚还杂糅了不少其他功能:
选中文本后按下 Alt+` 键可为选中文本添加「」符号包裹,若没有选中文本,则直接输出「」符号,并将光标移动到「」中间
这个「」是多年前从插座学院的一篇公众号排版规范文章里面学来的,用途是代替中文语境下的 “ ” 双引号,个人沿用了这么久,也的确是感觉更美观、直观
▲就像这样使用
敲代码习惯了「大驼峰命名法」,但经常写正文的时候还是会忘记,很多时候都是发文前检查时再挨着改的😂
而为了今后方便我就加了这样一个功能:选中文本后按下Alt+← 或 Alt+1 键即可切换为首字母大写; Alt+↑ 或 Alt+2 全部切换为大写; Alt+↓ 或 Alt+3 选全部切换为小写
但个人觉得每次都写完再来改的习惯不是很好,希望自己还是能在码字的过程中就一部到位
尝试过很多种方案之后,我想出了一个我觉得最好用的方案💪
即我的脚本还有这样一个功能:双击 CapsLock 即可使左侧单词首字母大写!有了这个功能之后,英文单词输入就再也不会影响我的正常中文输入了~
不仅如此,为了方便很多时候更规范的使用标准「驼峰命名法」,我的脚本还有一个功能,就是双击右 Ctrl 可以快速将光标右侧字母大写,具体使用演示可以参看下图
最后,如果你想获取阿虚的自用脚本,可以付费文章后获取:
至于为啥阿虚的自用脚本要收费?
一是这套方案的研究与实现,阿虚前前后后花了我有 2 个星期,付出的心血实在不少
二是付费之后可以提供一定程度上的功能定制,比如可以修改快捷键,更改替换的符号等,不超出我文中介绍的代码功能即可,有需要修改代码请付费后在文章底部留言
脚本同样已经公开分享到了阿虚的知识星球(👈点击即可加入),阿虚今后所有的付费文章也都会这样无偿提供给知识星球的粉丝,早加入早享受~
关于付费文章,由于苹果税问题,iPhone/iPad 端直接充值微信豆会被苹果吃掉 30%,建议是通过官方的「微信豆线上充值服务」来解决此问题,减少30%的扣费损失:
也可以电脑端微信打开此充值链接来进行 1:10 微信豆充值(手机端点开右方二维码即可复制链接):webeans.url.cn