不能共用一个正则,因TODO、FIXME、HACK语义不同需区分优先级:FIXME是必须修复的bug,HACK是临时绕过,TODO是待实现功能;混用会掩盖风险等级,且Highlight插件要求每条规则独立配置scope、regex和color,否则颜色覆盖或匹配错位。

TODO、FIXME、HACK 为什么不能共用一个正则?
因为它们语义不同,团队协作时需要区分优先级和处理方式。比如 FIXME 表示必须修复的 bug,HACK 表示临时绕过方案,TODO 是待实现功能——混在一起高亮会掩盖真实风险等级。
Highlight 插件支持数组配置,但每个条目必须独立定义 scope、regex 和 color,否则颜色会互相覆盖或匹配错位。
-
regex必须加单词边界,否则TODO_LIST会被误标;JSON 中要写成"\b(TODO)\b" - 所有条目
scope都得设为comment,否则会匹配到字符串里(比如console.log("TODO: fix this")) - 别用相同
name,例如都叫todo_highlight—— 插件内部靠它去重,重复名会导致只生效最后一个
怎么给不同标签配不同背景色?
直接在 Settings - User 里填多组规则,每组指定唯一 color 值。Sublime 不支持 CSS 式变量,所以颜色得硬编码。
推荐用 hsl() 或带 alpha 的 hex(如 "#FF6B6B80"),比纯 RGB 更易控制明暗对比度,尤其在暗色主题下不刺眼。
示例配置(注意双反斜杠转义):
{
"highlights": [
{
"name": "todo_highlight",
"scope": "comment",
"regex": "\b(TODO)\b",
"style": "fill",
"color": "hsl(210, 70%, 85%)"
},
{
"name": "fixme_highlight",
"scope": "comment",
"regex": "\b(FIXME)\b",
"style": "fill",
"color": "hsl(0, 80%, 80%)"
},
{
"name": "hack_highlight",
"scope": "comment",
"regex": "\b(HACK)\b",
"style": "fill",
"color": "hsl(45, 80%, 80%)"
}
]
}
为什么改了颜色却只显示灰色?
常见原因是 scope 写错,或者当前文件没被识别为对应语言类型。比如在 .py 文件里写 // TODO,注释 scope 实际是 comment.line.number-sign.python,而你配的是 comment,匹配失败。
验证方法:把光标停在 TODO 上,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name,看状态栏返回的实际 scope。若末尾是 comment.line.double-slash.js,就得把 scope 改成那个完整值。
- 通用 fallback 方案:用
"scope": "comment"覆盖大部分语言,但对 Python、Ruby 等以#开头注释的语言无效 - 想全语言兼容?得写多个规则,分别匹配
comment.line.number-sign、comment.line.double-slash、comment.block - 别依赖
TodoReview驱动颜色——它只生成keyword.other.todoscope,但多数主题根本不定义这个 scope 的颜色
多颜色高亮后,Find All 还能用吗?
能,但两者互不影响:Find All 是临时界面高亮,只在查找面板打开时存在;Highlight 插件是持久语法层标记,关掉面板也还在。
不过要注意冲突点:如果 Find All 的匹配色和 Highlight 背景色太接近(比如都是浅黄),视觉上会叠在一起,反而难分辨。
- 解决办法:在用户设置里调低
find_highlight的 alpha 值,例如"find_highlight": "hsla(60, 100%, 50%, 0.15)" - 或者干脆关掉查找高亮:
"find_highlight": null,只靠 Highlight 插件就够了 - 别试图用
style: "underline"混搭 fill —— 同一位置只能有一种 style,后者会覆盖前者
真正麻烦的不是配颜色,而是确保每种标签在所有语言、所有注释风格下都被正确 scope 到。哪怕漏掉一种,比如 Markdown 文件里的 ,就等于留了个盲区。











