错误波浪线颜色必须通过editor.tokencolorcustomizations配置invalid、error、warning等textmate scope才生效,而非workbench.colorcustomizations或editorerror.foreground;修改后需重载窗口,且波浪线样式(粗细、虚实、形状)不可自定义。

错误波浪线颜色改不了?不是设置没生效,而是你配错了地方——它根本不在 workbench.colorCustomizations 里,也不听 editorError.foreground。
为什么改 editorError.foreground 没用
这个配置项只控制右下角错误提示气泡里的文字颜色,和编辑器里那条红色波浪线完全无关。波浪线属于语法高亮层,走的是 TextMate token 机制,必须通过 editor.tokenColorCustomizations 配置 scope 才能生效。
-
editorError.foreground:只影响悬浮提示、问题面板中的文字色 -
editor.tokenColorCustomizations:才是控制波浪线颜色的正路 - 改完必须重载窗口(
Ctrl+Shift+P→Developer: Reload Window),热保存不触发重绘
怎么配对 scope 才能精准改红波浪线
不同语言、不同错误类型用的 scope 不一样。不能一概写 invalid,否则可能漏掉 TypeScript 的类型错误或 ESLint 的规则报错。
- 先用
Ctrl+Shift+P→Developer: Inspect Editor Tokens and Scopes,把光标停在报错位置,看右侧 scope 链里最具体的那一项(比如invalid.illegal.ts或error) - 常见 scope 值:
invalid(通用语法错)、warning(警告)、error(部分 LSP 报的类型错误) - 建议同时配多个,覆盖更全:
invalid、error、warning
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "invalid",
"settings": { "foreground": "#ff4757" }
},
{
"scope": "error",
"settings": { "foreground": "#ff4757" }
},
{
"scope": "warning",
"settings": { "foreground": "#ffa500" }
}
]
}
波浪线样式能调吗?别白费劲了
VSCode 硬编码了波浪线的渲染方式:1px 单实线、固定间距、不可加粗、不可虚化、不可改粗细或样式。所有“自定义样式”的说法,都是把 fontStyle: "underline" 误当成波浪线控制项——它只影响 token 文字本身是否带下划线,和诊断波浪线无关。
- 想加粗?不行
- 想改成波浪形(wavy)?不行
- 想调成虚线或点线?不行
- 唯一可间接影响的,是 scope 对应的 foreground 颜色和透明度(如
"#ff475780")
警告波浪线颜色太淡?优先检查是不是拼写检查在捣鬼
满屏黄色波浪线但代码明明没问题?大概率是 Code Spell Checker 或内置 cSpell 在中文字符串/注释里疯狂报“单词不存在”。这不是语法警告,而是拼写诊断,走的是另一套 color 配置。
- 关掉拼写检查比调颜色更治本:
cSpell.enabled设为false,或直接禁用插件 - 如果保留拼写检查,它的波浪线颜色由
spellchecker.errorColor控制(需插件支持),不是通用 scope - 别用
problems.decorations.enabled全局关闭——你会连真实 JS 类型错误都看不到
真正难搞的不是配颜色,而是 scope 判断不准;一个 invalid 覆盖不了 TS 的 error,也压不住 ESLint 的 keyword 类误报。每次换语言或升级插件,最好重新 inspect 一次 scope。











