应关闭英文词典、启用中文词典并禁用模糊匹配,因zhang是英文姓氏被词典收录故不报错,zhange未收录则标红;需设cSpell.dictionaries:["chinese"]、allowCompoundWords:false,并配置ignoreRegExpList放过真英文。

Code Spell Checker 把中文拼音(如 zhang、li)当英文人名查词典,结果不报错——这不是漏检,是它“认出来了”,但你其实想让它标红。必须关掉英文词典、启用中文词典、并禁用对拼音的模糊匹配。
为什么 zhang 不报错,但 zhange 会报?
插件默认加载 english 词典,而 zhang 是常见英文姓氏(如 Zhang Yimou),被词典收录 → 视为合法词;zhange 不在词典里 → 标红。你写的是中文人名拼音,但插件根本不知道你在写中文——它只做字面匹配。
- 中文拼音本身不是拼写错误,但如果你的项目要求所有中文人名必须用汉字(如注释里写
// 用户张三而非// user zhangsan),那拼音就是该被拦截的风格违规 - 仅靠
cSpell.language: ["zh-CN"]不够:中文词典(cspell-dict-chinese)管的是汉字切分和常用词,不管拼音 - 真正起效的是关掉
english词典 + 开启cSpell.allowCompoundWords: false(防止把zhangsan拆成zhang和san各自去查)
如何让拼音强制标红
目标:所有纯 ASCII 字符组成的中文拼音(如 zhang、liuqiang、xianggang)全部视为未识别词,统一标红。
- 在用户或工作区
settings.json中移除english:设置"cSpell.dictionaries": ["chinese"](注意不是["english", "chinese"]) - 确认已安装并启用官方
cspell-dict-chinese扩展(第三方“Chinese Spell Checker”无效) - 添加正则忽略规则到项目级
.cspell.json,反向操作——用ignoreRegExpList放过真英文,再让其余拼音裸奔:"ignoreRegExpList": [ "\b([A-Z][a-z]+){2,}\b", //放过 PascalCase 技术词如 useEffect "\b(https?|http):\/\/[\w.-]+(?:\/[\w.-]*)*\b" //放过 URL ] - 设
"cSpell.allowCompoundWords": false,否则zhangsan可能被拆解后部分命中词典
检查是否生效的三个信号
改完配置别急着写代码,先验证上下文是否加载成功:
- 右下角状态栏点击
ABC图标,确认显示语言为en,zh-CN或仅zh-CN(若只留中文,此处应不显示en) - 打开一个含
const userName = "zhang";的.ts文件,看zhang是否被标红;若没标,按Ctrl+Shift+P→Developer: Toggle Developer Tools,在 Console 里搜cSpell: no dictionary—— 出现说明词典没加载 - 在
.cspell.json里临时加个测试词:"words": ["zhang"],保存后zhang应立刻取消标红;删掉再保存,应立刻恢复标红 —— 这证明配置链通了
最易被忽略的一点:VSCode 的语言模式决定插件能否触发。哪怕 settings.json 全配对,如果当前文件右下角显示的是 Plain Text 而非 TypeScript,cSpell.enabledLanguageIds 列表里的 typescript 就完全失效——此时拼音永远不会被检查。


















