直接关闭 VSCode 中单词下波浪线的方法是:确认为 code-spell-checker 插件所致后,在设置中搜索 spellchecker.enabled 并设为 false;若仅需隐藏波浪线,可禁用 spellchecker.showTypes 中的 error 和 hint;也可通过语言专属配置如 "[markdown]": { "cSpell.enabled": false } 实现按文件类型关闭。

怎么关掉 VSCode 里单词下面的红色/绿色波浪线
直接关——不是禁用拼写检查插件,而是关闭它对当前语言或整个编辑器的提示渲染。VSCode 默认不带拼写检查,你看到的波浪线大概率来自 code-spell-checker 这个扩展(最常用),也可能是 es7-react-js-snippets 或其他带 lint 功能的插件顺带做的词法标记。
实操建议:
- 先确认是哪个扩展在起作用:按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Developer: Show Running Extensions,看哪些扩展正在活跃;重点查streetsidesoftware.code-spell-checker - 如果确实是
code-spell-checker,打开设置(Ctrl+,),搜索spellchecker.enabled,把它设为false - 不想完全关掉,只想隐藏波浪线?搜
spellchecker.showTypes,把error和hint对应的勾去掉(注意:这个选项只在插件 v2.20+ 支持) - 仅对某类文件关闭:在
settings.json里加语言专属配置,比如对 Markdown 禁用:"[markdown]": { "cSpell.enabled": false }
为什么关了设置还是有波浪线
常见错误现象:明明把 cSpell.enabled 设为 false,保存后重启 VSCode,某些文件里波浪线还在。这不是缓存问题,而是多层配置覆盖导致的。
原因和对策:
-
cSpell支持工作区级、用户级、语言级三级配置,优先级从高到低。检查你是否在项目根目录的.vscode/settings.json里写了"cSpell.enabled": true,它会覆盖全局设置 - 有些主题(比如
Nord或One Dark Pro)会把拼写错误的语法高亮样式硬编码进 theme 文件,导致即使插件没运行,波浪线依然显示——换回默认主题验证一下 - 极少数情况是 ESLint / Prettier 的
spelling规则在报错(比如用了@typescript-eslint/spelling),这时波浪线其实是eslint发出的,要查eslint.rules配置
关闭后会影响代码补全或语法高亮吗
不会。拼写检查(cSpell)和语法解析(typescript-language-server)、智能补全(IntelliSense)完全无关。它只扫描单词是否在词典里,不参与 AST 构建或类型推导。
但要注意:
- 如果你关的是
editor.spellCheck(这是 VSCode 内置的实验性拼写 API,v1.86+ 才有),它目前只支持英文,且仅影响输入时的下划线,不影响已有文本;而cSpell是独立进程,能检查注释、字符串、甚至 JSON key - 禁用
cSpell后,你写的recieve(正确应为receive)不会被标红,但 TypeScript 仍会报Property 'recieve' does not exist—— 这是类型系统的事,别混为一谈 - 性能上几乎无影响:
cSpell默认只检查打开的文件,且做了 debounce,关掉它对内存/CPU 占用变化微乎其微
有没有更轻量的替代方案
如果你只是讨厌波浪线,又不想彻底放弃拼写提示,可以换种方式「静音」:
- 保留
cSpell.enabled: true,但把波浪线颜色改成背景色:在settings.json加"workbench.colorCustomizations": { "editorError.foreground": "#00000000", "editorWarning.foreground": "#00000000" }(注意:这会同时隐藏所有错误/警告波浪线,不单是拼写) - 用
cSpell.userWords把高频误报词加白名单,比如["todo", "wip", "jsx"],比关掉更精准 - 不装
code-spell-checker,改用系统级拼写(macOS 自带,Windows 需开启「设置 > 时间和语言 > 语言 > 拼写检查」),但 VSCode 不会渲染波浪线,只在输入时弹窗提示
真正容易被忽略的是:波浪线可能来自多个源头,同一行文字底下叠着 ESLint 的红线、cSpell 的绿线、还有 GitLens 的装饰线——关一个设置不等于清屏,得一层层确认来源。


















