code spell checker插件默认不检查未在cspell.enabledlanguageids中明确列出的语言模式,如typescriptreact、vue等;需手动配置语言id、启用复合词支持、使用patterns精准过滤而非ignorewords,并在ci中改用cspell cli而非插件。

装了插件但注释里写错单词不标红?不是插件坏了,是默认配置没覆盖你的文件类型或语言——Code Spell Checker 必须手动告诉它“在哪查、查什么、忽略谁”。
为什么 .ts 文件里的字符串不检查?看 cSpell.enabledLanguageIds
插件不会自动识别所有语言模式,尤其 TypeScript React(typescriptreact)或 Vue 单文件组件(vue)常被漏掉。它只在你明确列出的语言 ID 列表里生效。
- 打开命令面板(
Ctrl+Shift+P),运行Preferences: Open Settings (JSON) - 确认
cSpell.enabledLanguageIds包含:["javascript", "typescript", "typescriptreact", "javascriptreact", "vue", "markdown"] - 如果用 Astro 或 Svelte,也得加上
astro或svelte;否则<script></script>里的字符串直接跳过 - 误配风险:写成
"*"看似万能,但会把.json或.yml里字段名(如user_id)全标红,反而干扰更大
中文注释总被标红?cSpell.language 和 cSpell.allowCompoundWords 得配齐
只设 "zh" 不够,“用户名”“登录页”这种词会被拆成单字或错误切分;必须配合复合词支持才能正确识别。
-
cSpell.language值推荐用["en", "zh-CN"](不是zh),zh-CN对简体中文词干识别更稳 - 必须加
cSpell.allowCompoundWords: true,否则useStore、httpStatus这类驼峰名全报错 - 别依赖右键“Add to user dictionary”——那会污染所有项目;优先选“Add to workspace dictionary”,它自动写进当前项目的
.cspell.json - 若用拼音输入法留下的残余(如
zhang、li),可临时关英文词典:cSpell.dictionaries: ["chinese"]
误报太多?用 .cspell.json 的 patterns 精准过滤,别瞎加 ignoreWords
ignoreWords 是全局放行,容易把真错词也放过;而正则 patterns 能按上下文过滤,比如只跳过 URL、环境变量、路径片段。
- 在项目根目录建
.cspell.json,内容至少含:{ "version": "0.2", "language": "en", "words": ["vite", "zod", "prisma"], "patterns": [ {"name": "env-vars", "pattern": "\b[A-Z_]{3,}\b"}, {"name": "urls", "pattern": "https?://[\w./?=-]+"} ], "ignoreRegExpList": ["env-vars", "urls"] } -
\b[A-Z_]{3,}\b匹配NODE_ENV、API_URL,但放过i18n(含小写字母) - 注意:正则匹配的是整个 token,不是子串;
process.env.NODE_ENV会被整段跳过,不是只忽略最后三个大写字母 -
ignorePaths必须写对 glob 模式:"node_modules/**"有效,"node_modules/*"无效
CI/CD 里拼写检查失败?别指望插件,用 cspell CLI
VS Code 插件跑在 GUI 进程里,CI 环境没有语言服务上下文、没激活的编辑器实例,插件根本起不来。
- 本地验证命令:
npx cspell --no-progress "**/*.{js,ts,md,txt}" - CI 配置示例(GitHub Actions):
run: npx cspell@6 --config .cspell.json --no-progress "**/*.{js,ts,md}" - 确保 CI 使用的
.cspell.json和本地一致;插件读的是工作区配置,CLI 默认只读项目根的.cspell.json,不会合并用户级设置 - 别在 CI 里用
--quiet或--no-progress过度静默——出错时连哪行错都看不到
最常被忽略的点:插件状态栏图标没出现,90% 是 cSpell.enabledLanguageIds 没配对,或者当前文件语言模式被意外改成 plaintext;右下角点一下语言标识,手动切回正确类型,比重装插件快十倍。











