Sublime中需用Highlight插件配置正则实现跨文件持久高亮TODO/FIXME:设scope为comment、regex为"(TODO|FIXME)"、style为fill,避免误匹配和主题依赖。

Sublime 项目里想让所有文件的 TODO 和 FIXME 持久高亮,靠 Find All 临时搜是没用的——它不跨文件、不保存、不响应主题颜色。真要批量生效,必须走 scope + 正则 + 插件三者配合,5 分钟就能落地。
用 Highlight 插件配正则是最稳路径
别折腾语法文件或 color scheme,Highlight 插件直接在渲染层加样式,不依赖语言语法定义,也不挑文件类型(.js/.py/.vue/.md 全通吃)。
- 装插件:按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Highlight安装 - 配置路径:
Preferences → Package Settings → Highlight → Settings - User - 填入以下内容(注意 JSON 转义,
要写成\b):
{
"highlights": [
{
"name": "todo_highlight",
"scope": "comment",
"regex": "\b(TODO|FIXME)\b",
"style": "fill",
"color": "hsl(48, 100%, 85%)"
}
]
}
关键点:scope 必须设为 comment,否则会误匹配字符串里的 "TODO";style: fill 比 underline 更易识别;\b 是防止 TODO_LIST 这类连写被命中。
为什么不能只靠 TodoReview 显示颜色
TodoReview 只负责扫描和列表,它打上的 keyword.other.todo scope 能不能显示颜色,全看当前主题是否定义了该 scope 的规则。多数轻量主题(比如默认的 Monokai.sublime-color-scheme)根本没配这一条,结果就是列表里有、编辑器里看不见。
- 验证方法:光标停在
TODO上,按Ctrl+Shift+P→Developer: Show Scope Name,看状态栏末尾有没有keyword.other.todo - 如果没出现,说明
TodoReview的正则没生效,检查设置里patterns是否写了"todo": "(?i)\bTODO\b" - 如果出现了但没颜色,别改 theme——直接换用
Highlight覆盖,省时省力
正则写错会导致高亮失效或卡顿
Sublime 的正则引擎对回溯敏感,尤其在大文件中用 .* 或 . 容易假死。常见错误包括:
- 写成
"regex": "TODO":没边界,会匹配TODOX、myTODO - 写成
"regex": "^//.*TODO":只匹配 JS/TS 单行注释,漏掉# TODO(Python)、(HTML) - 用
.*匹配任意空白:"^//.*TODO"应改为"^//\s+TODO\b",\s+更安全
测试是否生效:把光标停在 TODO 上,看状态栏是否显示 regex match —— 没这个提示,说明正则压根没命中。
跨项目复用配置只需同步 Settings - User
Highlight 的配置存在用户级 Settings 文件里,不是项目专属。你在一个项目配好后,所有新打开的文件、新创建的项目都会自动继承——不用复制语法文件、不用改 .sublime-project、也不用重启 Sublime。
唯一要注意的是:如果你在某个项目里手动禁用了 Highlight(比如通过 Preferences → Settings – Syntax Specific 关了),那该项目会跳过全局配置。这种例外情况容易被忽略,但排查起来很简单:关掉当前文件,新开一个同类型文件试试高亮还在不在。











