直接用Highlight插件配正则,5分钟内搞定跨文件、持久、作用域精准的TODO高亮;需设scope为comment、regex用双反斜杠转义(TODO|FIXME)、style选fill,并确保颜色足够醒目。

直接用 Highlight 插件配正则,5 分钟内搞定跨文件、持久、作用域精准的 TODO 高亮;别折腾 TodoReview 或改语法文件,它默认不画颜色,也不保证 scope 打得上。
装 Highlight 插件并写对正则
这是最稳的路径,不依赖主题、不修改语法、不重启编辑器。操作链路极短:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package,回车后搜Highlight并安装 - 再按
Ctrl+Shift+P,输入Preferences: 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,否则会匹配到字符串字面量里(比如 console.log("TODO: fix this"));style 选 fill 比 underline 更醒目;color 可按需调,但别用太淡的值——浅黄在白色背景上容易看不见。
为什么不能只靠 Find All 或 TodoReview
Find All 是临时界面反馈,关掉查找框就消失,不跨文件、不绑定语法 scope,其它插件和主题也复用不了这个“高亮”。
TodoReview 默认只扫描、列表,不负责着色。它打出来的 keyword.other.todo scope 能不能显示颜色,全看当前 color scheme 是否定义了该 scope 的规则——多数轻量主题根本没定义,所以你看到的还是灰色。
- 验证方法:换用
Monokai或Ayucia主题,立刻有颜色;不想换主题?那就别指望TodoReview自己画出来 - 若硬要用
TodoReview驱动高亮,必须确保设置里有"pattern_names": ["todo"],且patterns正则正确(如"todo": "(?i)\bTODO\b"),否则 scope 根本不打上去
配合书签快速跳转 TODO 行
高亮只是看见,定位才是关键。别用 Ctrl+F2 跳书签——它在笔记本上常被系统劫持(Windows 需 Ctrl+Fn+F2,macOS 默认调亮度),而且是线性扫描,不排序、不记忆顺序。
- 统一用
F12打/删书签:光标停在哪一行,按一次加,再按一次删,反馈明确、无冲突 - 打完书签后,按
Ctrl+Shift+P输入Bookmarks: Show,面板列出所有书签的行号 + 行首代码片段 - 支持实时关键词过滤:输
TODO就只留含 TODO 的行,双击直接跳转;输FIXME同理 - 注意:别把书签打在空行、全注释行末尾或缩进过深的行——面板只截取行首约 30 字,预览为空就无法识别
正则和 scope 容易踩的坑
写错正则或 scope 是高亮失效最常见的原因,状态栏不显示 regex match 就说明没命中。
-
regex中的在 JSON 字符串里要写成\b,否则解析失败 -
scope写成source或漏写,会导致匹配进字符串或代码块,污染阅读 - 避免用
.或.*:Sublime 正则引擎不支持贪婪回溯优化,大文件里容易卡死 - 更安全的写法是锚定上下文,比如
"^//\s+TODO\b"(JS/Python 注释行首)、"^#\s+TODO\b"(Shell/Python 注释)
真正要的不是“语法理论正确”,是一眼看见、跨文件稳定、不随主题切换失效——Highlight 插件配对 scope 和 regex,就是最接近这个目标的解法。











