Sublime Text 本身不内置 TODO 高亮,所谓“恢复默认”实为误传;所有高亮均依赖插件(如Highlight)或手动配置,删配置后失效多因插件未启用、JSON格式错误、scope设置不当或主题未定义keyword.other.todo作用域。

Sublime Text 本身不带默认的 TODO 高亮,所谓“恢复默认”其实是误传——它压根没内置这个功能。所有高亮都依赖插件或手动配置,所谓“恢复”,实际是重装插件或还原你改过的配置文件。
删掉自定义 Highlight 配置后仍不生效?
很多人删了 Preferences → Package Settings → Highlight → Settings - User 里的内容,发现 TODO 还是没颜色。这是因为:
- 插件本身没启用:检查
Preferences → Package Settings → Highlight菜单是否存在;若整个菜单消失,说明插件没装好或被禁用 - 配置写在了错误位置:Settings - User 必须是纯 JSON,不能有多余逗号、注释或未闭合括号;哪怕一个
,都会让整个配置失效 - scope 写错了:比如写成
"scope": "comment.line",但实际 scope 是comment.line.double-slash.js(不同语法不同);最稳写法是"scope": "comment",它能覆盖多数注释类型
TodoReview 显示列表但不着色?不是 bug,是设计如此
TodoReview 只负责扫描和聚合 TODO/FIXME 到侧边栏,它不会主动触发高亮。是否显示颜色,完全取决于当前 color scheme 是否定义了 keyword.other.todo 这个 scope 的样式。
常见现象:
- 用了 Dracula 或 Monokai 主题 → 看得见颜色
- 用了极简主题(如 Adwaita、Legacy)→ 全是灰色,因为 theme 文件里压根没写
keyword.other.todo规则 - 自己改过
.sublime-color-scheme→ 可能删掉了对应 scope 条目
别折腾 TodoReview 的设置项,直接装 Highlight 插件更省事。
regex 总是匹配失败?重点看这三个地方
状态栏不显示 regex match,说明正则根本没命中。高频出错点:
-
在 JSON 里要写成\b:否则"TODO"会被解析为退格符,不是单词边界 - 漏了括号或大小写:写
"TODO|FIXME"没问题,但写成"todo|fixme"就不匹配(默认区分大小写);加(?i)开头可忽略大小写:"(?i)\b(todo|fixme)\b" - 匹配到了字符串里:比如
console.log("TODO: refactor"),这时scope: "comment"就无效;必须改成scope: "string"或干脆去掉 scope 限制(不推荐,易误标)
不想装插件,只用内置功能临时高亮
按 Ctrl+F → 输入 (TODO|FIXME) → 勾选 .*(正则模式)→ 点击 Find All。所有匹配项会立刻高亮,且支持 F3 循环跳转。
这个方法不持久,但胜在零配置、无冲突、全版本通用。适合临时排查,也适合在别人电脑上快速查看项目 TODO 分布。
真正容易被忽略的是 scope 的动态性:同一个 TODO 在 JS 文件里可能是 comment.line.double-slash.js,在 Python 里是 comment.line.number-sign.python,而 Highlight 插件的 "scope": "comment" 能兜底,是因为 Sublime 的 scope 是继承结构,“comment” 是它们共同的父级。别试图穷举所有子 scope,父级就足够了。











