写代码这么多年,真正让我崩溃的 bug 不一定来自业务代码。
有时候只是一个键。
比如你正在改配置文件,敲着敲着发现后面的字符不断消失;或者 Git 命令明明没写错,却一直提示找不到命令。
排查半天,最后发现:
前者是不小心按到了
Insert后者是输入法切到了全角
这两个问题不大,但每次出现都特别恶心。
Insert:最容易被误触的键之一
我一直觉得,Insert是键盘上存在感最低、破坏力却不低的一个键。
平时几乎用不到它,但误触概率却不低。
它的作用其实很简单:
插入模式(默认)
覆盖模式(Insert 开启后)
正常情况下:
ab|cd输入:
x结果:
abxcd覆盖模式下则变成:
abxd后面的字符直接被替换掉。
很多人第一次遇到时都会怀疑:
编辑器坏了?
输入法出问题了?
系统抽风了?
实际上只是误按了一下Insert。
更坑的是,大部分软件不会特别明显地告诉你已经进入覆盖模式。
等你发现不对劲的时候,可能已经改乱了好几行内容。
最简单的解决办法
如果突然发现:
输入的字符把后面的内容覆盖掉了
光标移动正常,但文字越来越少
删除键和退格键看起来都没问题
先别慌。
直接按一下键盘上的Insert键。
因为大概率是误触开启了覆盖模式,再按一次就能恢复正常。
很多人第一次遇到这个问题,会花十几分钟检查编辑器设置,其实一秒钟就能解决。
我现在的做法:直接禁用
说实话,我这么多年几乎没主动用过Insert。
但被它坑过无数次。
所以后来干脆直接禁用了。
Windows 可以通过注册表屏蔽这个按键。
按下:
Win + R输入:
regedit打开注册表编辑器。
依次进入:
HKEY_LOCAL_MACHINE └─ SYSTEM └─ CurrentControlSet └─ Control └─ Keyboard Layout在右侧空白区域点击鼠标右键:
新建 → 二进制值名称填写:
Scancode Map双击打开后输入:
00 00 00 00 00 00 00 00 02 00 00 00 00 00 52 E0 00 00 00 00保存后重启电脑。
重启完成后,按Insert不会再有任何效果。
如果以后想恢复,只需要删除刚刚创建的Scancode Map,然后再次重启即可。
全角输入:代码世界里的隐形杀手
相比 Insert,全角输入更难发现。
因为它看起来几乎是对的。
例如:
git push和:
git push很多字体下乍一看根本没区别。
但系统眼里完全是两套字符。
于是终端会很认真地告诉你:
'git' 不是内部或外部命令第一次遇到时,我甚至怀疑过 Git 环境变量坏了。
结果只是输入法切到了全角。
为什么总是中招
原因通常就两个。
输入法偷偷切了状态
很多输入法都支持:
中文
英文
全角
半角
有时候切换状态发生了,你根本没注意。
尤其是输入法默认快捷键比较多的时候,误触概率非常高。
提示太不明显
大部分输入法只会在状态栏显示:
全或者:
半一个很小的标识。
写代码的时候基本没人会一直盯着任务栏看。
所以经常是命令执行失败后才发现。
我现在怎么处理
第一招:代码和终端统一使用英文输入法
无论是:
VS Code
PyCharm
Cursor
Terminal
PowerShell
CMD
进入这些工具后,我都会先切换到英文输入法。
Windows 下直接按:
Shift或者:
Win + Space切换到:
ENG状态即可。
这样输入的字符天然就是半角格式。
第二招:关闭容易误触的全角快捷键
很多输入法默认支持:
Shift + Space切换全角和半角。
如果经常误触,可以直接关闭。
以搜狗输入法为例:
打开:
搜狗输入法 → 设置 → 按键设置找到:
全角/半角切换把快捷键关闭。
或者改成:
Ctrl + Shift + Alt + F12这种基本不可能误触的组合。
QQ输入法、微软拼音、百度输入法也有类似设置。
原理都一样。
把快捷键改远一点,问题基本解决。
第三招:让编辑器自动切换输入法
如果你经常中英文切来切去,可以让编辑器帮你处理。
以 VS Code 为例。
安装插件:
Auto Input Method或者:
Input Method安装完成后配置:
{ "inputMethod.default": "en" }进入代码编辑区自动切英文。
切回聊天窗口、浏览器或者文档时恢复中文。
写代码时几乎不用再手动切换。
第四招:学会快速判断是不是全角
如果命令突然报错:
command not found或者:
不是内部或外部命令先看看输入内容有没有这些字符:
abc 123 () 【】 ,。如果长这样:
git python npm那基本可以确定是全角输入导致的。
直接切回英文输入法重新输入即可。
这些功能本身没问题
冷静想想,Insert和全角输入都不是设计缺陷。
它们确实有自己的使用场景。
只是对于大多数程序员来说:
Insert的使用频率接近零全角字符在代码和终端里基本属于负收益
所以我现在的原则很简单:
能关就关,能禁就禁。
少一个会误触的开关,就少一次莫名其妙的排查。
毕竟真正值得花时间解决的,应该是业务 Bug,而不是键盘给自己制造的 Bug。