vscode原生括号配对不支持中文括号,因其仅识别ascii括号;需禁用原生功能、安装bracket pair colorizer 2插件并手动配置中文括号对才能实现高亮。

VSCode 原生不识别中文括号,必须禁用原生配对、手动添加配对规则,再靠插件上色——否则【】、「」永远不亮。
为什么 editor.bracketPairColorization.enabled 对中文括号无效
VSCode 的原生括号配对引擎(editor.bracketPairColorization.enabled)只内置识别 ASCII 括号:()、[]、{}、。中文符号如【】、「」、『』、()(全角)不在其 bracketPairs 定义表中,语言服务根本不会把它们当“括号”处理。
即使你把 editor.matchBrackets 设为 "always"、editor.guides.bracketPairs 设为 "all",这些设置也只作用于被识别的括号对——中文括号连“被识别”这一步都没过,后续全白搭。
常见错误现象:
– 右下角语言模式是 JavaScript,但【】不着色
– Bracket Pair Colorizer 2 已安装,却只给 () 上色,【】灰扑扑
– settings.json 里写了 "editor.bracketPairColorization.enabled": true,仍无反应
禁用原生功能 + 配置 Bracket Pair Colorizer 2
这是目前最稳定、兼容性最好的方案。注意:必须先关掉原生引擎,否则插件会被绕过。
- 在
settings.json中显式关闭原生配对:"editor.bracketPairColorization.enabled": false - 确保已安装官方维护的插件:
扩展名:Bracket Pair Colorizer 2,作者:CoenraadS - 在
settings.json中添加自定义配对规则:"bracket-pair-colorizer-2.colorizedBracketPairs": [ ["【", "】"], ["「", "」"], ["『", "』"], ["(", ")"] ] - 可选:加一组全角 ASCII 兼容项避免漏掉(比如某些输入法打出的()):
["(", ")"]确实要单独写,它和半角(不是同一对
重启 VSCode 或执行 Developer: Reload Window 生效。此时光标停在【上,】会高亮;停在「内,」也会响应。
中文括号颜色不明显?调 foregroundX 和透明度
Bracket Pair Colorizer 2 默认用 foreground1 ~ foreground3 控制颜色,但它的渲染逻辑和原生不同:颜色直接作用于括号字符本身(不是背景/边框),所以要改的是 workbench.colorCustomizations 下的 bracketPairColorizer2.foreground1 等字段。
示例配置(放入 settings.json 的 workbench.colorCustomizations 内):"bracketPairColorizer2.foreground1": "#FF6B6B""bracketPairColorizer2.foreground2": "#4ECDC4""bracketPairColorizer2.foreground3": "#FFD93D"
关键点:
– 不要用 editorBracketHighlight.foreground1(那是原生功能字段,已失效)
– 颜色值建议带透明度(如 #FF6B6B80)避免盖住语法高亮(比如字符串里的【】)
– 如果用了主题自带括号染色(如某些 Vue 主题),可能冲突,临时切到 Default Dark+ 排查
Plain Text 模式下中文括号完全不工作
哪怕配对规则写全了,如果右下角语言模式显示为 Plain Text,Bracket Pair Colorizer 2 也不会启动——它依赖语言服务提供的 token 范围信息来过滤括号位置。
解决办法:
– 点击右下角语言标签,手动切换为对应语言(如 JavaScript React、Markdown、Vue)
– 若文件后缀不标准(比如 .mdx、.cfg),可在 settings.json 中加语言关联:"files.associations": { "*.myext": "javascript" }
– 对纯文本笔记类场景(如 .txt 里写中文结构),可装 Chinese Language Support 扩展,它提供基础的中文标点匹配逻辑,配合 editor.matchBrackets: "always" 能实现简单高亮(但不着色)
最容易被忽略的一点:中文括号在字符串或注释内部(如 console.log("【test】");)默认不触发配对——这是插件设计行为,防止误匹配;如需强制支持,得改插件源码或换用更底层的 AST 分析方案,普通用户不建议折腾。











