真正高亮TODO需用Highlight插件配置scope为comment、正则"(TODO|FIXME)"、style设fill;TodoReview仅扫描不渲染颜色,依赖主题支持;自定义语法方案灵活但冗余。

为什么直接搜 TODO 不算真高亮
按 Ctrl+F 输入 (TODO|FIXME) 并点 Find All,只是临时标记搜索结果——关掉查找框就消失,也不会在其它文件里延续,更不会随主题变色。真正要“一眼看见”,得让 Sublime 把 TODO 当成一个有独立 scope 的语法单元,而不是普通注释文本。
用 Highlight 插件配正则最稳
不改语法文件、不换主题、不用重启,5 分钟生效。关键三要素必须对齐:
-
scope必须设为comment:否则会误匹配字符串里的"TODO"字面量 -
regex用双反斜杠:"\b(TODO|FIXME)\b"(JSON 字符串里要转义) -
style推荐fill:比underline更醒目,尤其在深色主题下
配置路径:Preferences → Package Settings → Highlight → Settings - User,填入:
{
"highlights": [
{
"name": "todo_fixme",
"scope": "comment",
"regex": "\b(TODO|FIXME)\b",
"style": "fill",
"color": "hsl(48, 100%, 85%)"
}
]
}别指望 TodoReview 自己画颜色
TodoReview 只负责扫描和列表,它打上的 keyword.other.todos scope 能不能显示颜色,完全取决于当前主题是否定义了该 scope 的规则。多数轻量主题没定义,所以你看到的还是灰色。
立即学习“Python免费学习笔记(深入)”;
- 换主题(比如
Monokai或Ayucia)能立刻见效 - 不想换主题?那就别依赖它驱动高亮,老实用
Highlight插件覆盖 - 如果硬要用
TodoReview,确保设置里有"pattern_names": ["todo"]且正则写对,例如"todo": "(?i)\bTODO\b",否则 scope 根本不打上去
高级:想彻底绑定到 Python 语法里?
如果你希望 TODO 在 Python 文件中拥有专属 scope(比如 comment.todo.python),就得新建一个覆盖语法:
- 创建文件:
Packages/User/Python-TODO.sublime-syntax -
scope设为source.python,include原生 Python 语法 - 加一条
match规则:\b(TODO|FIXME)\b→scope: comment.todo.python - 再在你的
.sublime-color-scheme里加一条对应规则:"scope": "comment.todo.python"
这条路灵活但重,日常开发没必要——Highlight 插件已覆盖全部场景,唯一容易漏的是 scope 没锁死在 comment,导致字符串里也被标红,这点务必检查。


















