VSCode 无法通过 tokenColorCustomizations 直接设置括号颜色,因其不作为独立语法 token 处理;唯一可靠方案是安装 Bracket Pair Colorizer 2 插件,它基于 AST 解析实现多级嵌套括号的精准着色与样式控制。

VSCode 默认不支持单独给括号对设置颜色,所谓“括号配对高亮”本质是语法着色或括号匹配插件的视觉反馈,不能靠 editor.tokenColorCustomizations 直接改括号颜色。
括号颜色为什么不能用 tokenColorCustomizations 改
VSCode 的 tokenColorCustomizations 只作用于语法 token(比如 keyword、string),而普通括号 () {} [] 在绝大多数语言语法中被归类为 punctuation 或直接不打 token —— 它们默认复用前景色,没有独立 color scope。
- 即使你在
settings.json里强行加"punctuation": "#ff0000",效果也不稳定:有些语言(如 JavaScript)里括号可能被 parser 吞掉,不触发该 token - 修改
punctuation会影响逗号、分号、冒号等所有标点,不是“只改括号” - 括号匹配时的反白背景(即光标停在
(上时右边)高亮)属于编辑器渲染层行为,和语法着色无关,无法通过 color theme 配置
真正能控制括号匹配样式的唯一可靠方式:Bracket Pair Colorizer 2
这是目前唯一持续维护、支持 VSCode 原生 bracket pair guide API 的扩展。它不依赖语法 token,而是解析 AST 或行内结构,动态标记配对括号,并允许精细控制每级嵌套的颜色和样式。
- 安装后默认启用,无需额外配置就能看到彩色括号对
- 关键配置项必须写进
settings.json(UI 设置里搜不到完整选项): -
"bracket-pair-colorizer-2.depreciation-alert": false—— 关闭烦人的弃用提示(v4+ 版本已改名,但插件仍沿用旧名) -
"bracket-pair-colorizer-2.activeScopeCSS": "border-left: 2px solid #56b6c2; background: rgba(86, 182, 194, 0.1);"—— 给当前匹配范围加左侧边框和半透底色 -
"bracket-pair-colorizer-2.disabledLanguages": ["plaintext", "markdown"]—— 避免在不需要的文件类型里启动,省性能
原生 bracket pair guide(VSCode 1.67+)只能调粗细和颜色,不能设括号本身颜色
VSCode 自带的括号引导线(bracket pair guide)是垂直对齐的竖线,不是括号本体。它和括号匹配高亮(highlight)是两套机制:
- 开启方式:
"editor.guides.bracketPairs": true(默认已开) - 能调的只有引导线:
"workbench.colorCustomizations": {"editorBracketMatch.background": "#264f7833"}—— 这个只影响匹配括号周围的浅色背景,不是括号文字色 -
editorBracketMatch.border可设边框,但仅限于小块高亮区域,且不支持不同嵌套层级区分 - 如果你发现括号没变色,别折腾 theme 文件,先确认你是不是误以为“引导线 = 括号变色”
常见踩坑场景和对应操作
很多人试了十几种配置都没效果,问题往往出在混淆了三个概念:语法着色(token)、括号匹配高亮(highlight)、括号引导线(guide)。它们互不影响,也不能互相替代。
- 想让
{和}文字变成紫色?→ 不可行。除非用 TextMate grammar 注入新 scope,成本远高于收益 - 光标移到
[上,右边]没反应?→ 检查是否禁用了"editor.matchBrackets": "always"(默认是always) - 装了 Bracket Pair Colorizer 2 但没颜色?→ 看右下角状态栏有没有显示「BPC2」图标;没有就说明没生效,大概率是
disabledLanguages误删了当前语言 - 换主题后括号颜色乱了?→ 主题作者可能覆盖了
editorBracketMatch,此时优先以workbench.colorCustomizations强制重载
括号颜色这件事,表面是 UI 配置,实际卡在编辑器底层渲染逻辑上。能调的只有“周围环境”,不是括号自己——接受这个限制,比硬刚配置更省时间。