sublime text 4 中 rainbowbrackets 插件已停更且不兼容,唯一稳定方案是配置 brackethighlighter:需启用 high_visibility_enabled_by_default、手动定义 bracket_styles 各层级颜色与样式,并在主题文件中补充 brackethighlighter.* scope 规则。

Sublime Text 本身不支持 Rainbow Brackets(彩虹括号),RainbowBrackets 插件也**早已停止维护且不兼容 Sublime Text 4**,强行安装会导致高亮失效、崩溃或与 BracketHighlighter 冲突。真要实现嵌套括号分层着色,唯一稳定可行的路径是用 BracketHighlighter 配合手动层级配色——不是“装个插件就完事”,而是得改配置、调作用域、选对样式。
为什么 RainbowBrackets 插件不能用
截至 2026 年 7 月,RainbowBrackets 在 Package Control 中已下架,GitHub 仓库归档,最后一次更新停留在 Sublime Text 3 时代。它依赖过时的 API(如 view.add_regions 的旧签名),在 ST4 中会:
- 触发 AttributeError: 'View' object has no attribute 'add_regions' 类错误
- 与 BracketHighlighter 的 region 渲染逻辑抢资源,导致括号忽明忽暗甚至完全不亮
- 不识别新语法引擎(如 JS Custom、Better Python)的 scope,JSON 或 TSX 文件里括号直接失联
所以别花时间搜“RainbowBrackets 安装教程”,那是过期信息。
BracketHighlighter 实现彩虹效果的关键配置
真正起作用的是 bracket_styles 里的层级定义,不是靠插件自动猜——你得明确告诉它 level_1 用什么颜色、level_2 用什么边框、哪类括号(curly、round、square)走哪套规则:
-
high_visibility_enabled_by_default必须设为true,否则只悬停闪一下,根本看不到嵌套 -
bracket_styles下要分别定义curly、round、square,不能只配default——否则 Python 的[]和 JS 的{}全混成一种色 - 每种类型下必须写全
level_1到level_6(哪怕只用前 4 层),缺一层就会 fallback 到上一级,颜色全串 -
style推荐用"outline","solid"容易和代码背景融掉,尤其深色主题下 -
color值必须是十六进制(如"#FF6188"),不能写"red"—— 后者会被忽略
示例片段(放进 BracketHighlighter.sublime-settings 用户配置):
{
"high_visibility_enabled_by_default": true,
"high_visibility_style": "outline",
"bracket_styles": {
"curly": {
"level_1": {"color": "#FF6188", "style": "outline"},
"level_2": {"color": "#AB9DF2", "style": "outline"},
"level_3": {"color": "#75B5AD", "style": "outline"},
"level_4": {"color": "#FFD866", "style": "outline"}
}
}
}
主题文件里必须补全 brackethighlighter.* scope
就算 BracketHighlighter 配好了,如果当前主题(比如你用的 Dracula 或 One Dark)没声明 brackethighlighter.curly 这类作用域,颜色照样不显示——它不是“画上去”,而是靠 Sublime 渲染 engine 把你配的 color 映射到对应 scope 上。
验证方法:打开一个含多层括号的文件,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name,把光标停在最内层 { 上,看状态栏是否显示类似 brackethighlighter.curly.level_3 的 scope 名。如果没有,说明主题缺失定义。
解决方式(仅需改一次):
- 用
PackageResourceViewer打开当前主题文件(如Monokai.sublime-color-scheme) - 在
rules数组末尾加这几段(复制粘贴即可):
[
{
"name": "Rainbow Curly Bracket Level 1",
"scope": "brackethighlighter.curly.level_1",
"foreground": "#FF6188"
},
{
"name": "Rainbow Curly Bracket Level 2",
"scope": "brackethighlighter.curly.level_2",
"foreground": "#AB9DF2"
}
]
注意:foreground 是括号字符本身的颜色,background 在 outline 模式下无效;不同主题文件结构略有差异,但只要加在 rules 里就行。
真正麻烦的不是配色,而是层级映射——level_1 指最外层括号,level_4 是第四层嵌套,但如果你写的函数里有 if (a && (b || [c, {d: e}])),括号类型混杂,curly 和 round 的层级是各自独立计数的。这点不厘清,配再漂亮的颜色也看不出结构。











