Sublime中直接搜索TODO无颜色是因为Find All仅临时标记,不改变语法scope;需用Highlight插件配置正则匹配comment内的TODO/FIXME并指定fill样式,5分钟即可实现跨文件持久高亮。

为什么直接搜 TODO 没用颜色?
Sublime 默认的 Find All 只是临时标记匹配文本,关掉查找框就消失;它不改变文本的语法 scope,所以无法和主题联动、不能跨文件持久生效。真正“高亮”指的是让 TODO 被识别为一个有语义的语法单元(比如 keyword.other.todo),才能被配色方案染色。
用 Highlight 插件配正则最稳
装一个插件、写三行配置,5 分钟内搞定,不用改语法文件、不依赖项目结构、所有语言通用。
- 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Highlight安装 - 打开
Preferences → Package Settings → Highlight → Settings - User - 填入以下内容(注意双反斜杠转义、
防止匹配TODO_LIST):
{
"highlights": [
{
"name": "todo_fixme",
"scope": "comment",
"regex": "\b(TODO|FIXME)\b",
"style": "fill",
"color": "hsl(48, 100%, 85%)"
}
]
}
关键点:scope 必须设为 comment,否则会误匹配字符串字面量里的 "TODO";style 选 fill 比 underline 更醒目;JSON 里 要写成 \b。
TodoReview 只管列表,不管颜色
TodoReview 本身不负责渲染颜色——它只扫描并生成带 keyword.other.todos scope 的列表。能不能显示颜色,完全取决于你当前的 .sublime-color-scheme 是否定义了这个 scope 的规则。
- 多数轻量主题(如 Mariana)根本没定义
keyword.other.todos,所以你看不到颜色 - 换用
Monokai或Ayucia主题,立刻有颜色 - 不想换主题?那就别指望
TodoReview自己画色,老实用Highlight覆盖
别碰语法文件,除非你真需要作用域提升
有人想改 .sublime-syntax 给 TODO 单独打上新 scope,这可行但没必要。你得先确认注释里 TODO 当前的 scope 是什么(用 Ctrl+Shift+P → Developer: Show Scope Name 查),再写 match 规则去“提升”,最后还得在 color scheme 里加对应规则——三步全对才生效,任一环节出错就白忙。
而 Highlight 插件绕过了整个语法层,在渲染前直接注入样式,只要正则写对、scope 限定准,颜色就立刻出现。复杂点在于正则边界和 scope 范围控制,不是逻辑嵌套或配置路径问题。











