VSCode高亮颜色分四类独立系统:语法高亮(editor.tokenColorCustomizations)、语义高亮(editor.semanticTokenColorCustomizations)、UI/装饰色(workbench.colorCustomizations)、选区高亮(如editor.selectionBackground);改错位置颜色即失效。

VSCode 高亮颜色不是“装个插件就完事”,而是分四类独立系统:语法高亮(editor.tokenColorCustomizations)、语义高亮(editor.semanticTokenColorCustomizations)、UI/装饰色(workbench.colorCustomizations)、选区高亮(editor.selectionBackground等)。改错地方,颜色就完全不生效。
怎么改关键字、字符串、注释这些语法颜色
必须用 editor.tokenColorCustomizations,别碰 workbench.colorCustomizations——后者只管侧边栏、状态栏,对代码文本完全无效。
- 先按
Ctrl+Shift+P输入Developer: Inspect Editor Tokens and Scopes,把光标停在目标词(比如一个双引号字符串)上,看面板顶部显示的 scope,例如string.quoted.double.js - 在
settings.json里写成:"editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "string.quoted.double.js", "settings": { "foreground": "#CE9178" } } ] } - scope 名必须精确匹配,少个
.js后缀或写成string.double都会静默失效 - 如果用了 Pylance 或 TypeScript Server,它可能启用语义高亮,优先级高于 TextMate;此时要改
editor.semanticTokenColorCustomizations,或临时关掉语义高亮验证效果
为什么双击变量后其他同名位置不亮或颜色太淡
那是 editor.selectionHighlightBackground 控制的,和你拖选的主高亮(editor.selectionBackground)完全无关。
- 值只能是十六进制,如
"#5a5a5a",不支持rgb()或命名色 - 第三方主题(如 One Dark Pro)常硬编码该值,导致你的设置被覆盖 → 换回
Default Dark+测试是否生效 - 确保
editor.selectionHighlight是true(默认开启),否则这个颜色根本不会渲染 - 它只作用于语言服务识别的符号(如变量、函数名),不是所有相同字面量;想全文匹配字面量,得用
editor.wordHighlightBackground
搜索结果(Ctrl+F)、终端选中、非焦点编辑器的颜色各走哪条路
它们互不干扰,各用独立配置项:
-
workbench.colorCustomizations.editor.findMatchBackground:控制 Ctrl+F 的高亮色,必须套在workbench.colorCustomizations对象里 -
terminal.selectionBackground:终端里选中的文字背景,和编辑器里的editor.selectionBackground无任何关系 -
editor.inactiveSelectionBackground:切到别的面板后,编辑器里那块选区变暗的颜色;不设它,就会回落到主题默认色,可能和预期不符 - 所有这些键都必须写在
settings.json根层级,拼错字段名(比如tokenColorCustomization少个s)或放错位置(比如塞进workbench.colorCustomizations里),都会静默失效
highlight-words 插件高亮不显示?检查这三处
这是唯一适合「手动触发、跨文件、多色叠加」的插件,但装完几乎必配,否则等于白装。
-
highlightwords.colors至少填 2 组颜色,否则插件校验失败,高亮不出现 -
highlightwords.defaultMode推荐设为3(全词 + 忽略大小写),避免搜map时把flatMap也框进去 -
highlightwords.box中dark: false是关键:深色主题下若设为true,边框会和背景融合,看起来像没高亮 - 快捷键默认未绑定,必须手动用命令面板搜
Highlight Toggle Current,点齿轮图标设键位(如F8),且注意是否被Prettier或Auto Rename Tag抢占
真正难的不是“怎么写配置”,而是区分清楚哪一层在管哪一块颜色——语法、语义、UI、选区,四者边界清晰,混着改只会越调越乱。每次改前,先用 Inspect Editor Tokens 确认 scope,再查对应配置项,比反复试错快得多。











