最近在 VSCode 里敲代码,遇到一个贼郁闷的 Bug:打中文汉字完全正常,但标点符号硬生生全是英文半角的(比如敲中文逗号,出来的是英文逗号 ,)。
最离谱的是,这问题只在 VSCode 里有,系统其他软件(浏览器、微信、Notion)全都是正常的。
排查了一下,主要是以下两个原因,速记两个最快的解决办法。
1. 最常见:误触了输入法快捷键
其实大概率不是配置坏了,而是你在 VSCode 里疯狂按快捷键时,不小心误触了输入法本身的“中英文标点切换”快捷键。因为很多系统会记住每一个应用独立的输入状态,导致你在 VSCode 里被锁死在了英文标点模式。
临时解决办法:在 VSCode 窗口中,按一下快捷键
Ctrl + .(Control + 句号)。这是微软拼音、搜狗等输入法默认的标点切换快捷键,按完标点立刻恢复正常。注意:使用快捷键
Ctrl + .只能临时有效,在下次重启 VSCode 或者某些情况下切换窗口后,可能会再次失效。长期有效的解决办法(以搜狗输入法为例):
如果想彻底解决这个问题,需要修改输入法设置,将 VSCode 从自动使用英文标点的应用清单中移除。具体步骤如下:点击搜狗输入法状态栏图标,选择 「偏好设置」。

在偏好设置窗口中,选择 「常用」 属性页。

找到 「中文下使用英文标点」,点击其下方的 「App 清单」,在列表中找到 VS Code 并将其去掉/删除即可。

2. VSCode 底层的 Edit Context 兼容问题
VSCode 较新版本启用了一些实验性的输入法(IME)处理机制,在某些系统下会和输入法发生冲突。
- 解决办法:
- 按
Ctrl + ,(Mac 上是Cmd + ,)打开设置。 - 在顶部搜索框输入
Edit Context。 - 找到
Editor: Experimental Edit Context Enabled,把勾选去掉(设为 false)。 - 完全重启一下 VSCode 即可。
- 按
3. 顺便排查自动转换插件
顺便看一眼自己有没有装过类似于 Chinese Punctuation to English 或者 Auto Transform Punctuation 之类的插件(有些人在写代码时为了免去中英输入法切换会故意装这个,时间久了容易忘)。
如果有的话,按 Ctrl + Shift + X 打开插件市场,直接把它们禁用或者卸载掉就搞定了。