Find All 不能替代真正高亮,因其仅为临时界面标记、不改变文本 scope、无法被主题捕获;真正高亮需用 Highlight 插件将 TODO/FIXME 打上 comment scope 并设 fill 样式,确保仅匹配注释内内容。

为什么 Find All 不能替代真正高亮
按 Ctrl+F 输入 (TODO|FIXME) 并点 Find All,只是临时界面标记,关掉查找框就消失;它不改变文本的 scope,无法被主题颜色规则捕获,也不能跨文件持续存在。真正“醒目”意味着让编辑器把 TODO 当作一类独立语法元素来渲染——比如打上 keyword.other.todo 这样的 scope,才能和配色方案联动。
用 Highlight 插件配 fill 样式最直接
装好 Highlight 后,在 Preferences → Package Settings → Highlight → Settings - User 里填入:
{
"highlights": [
{
"name": "todo_fill",
"scope": "comment",
"regex": "\b(TODO|FIXME)\b",
"style": "fill",
"color": "hsla(48, 100%, 75%, 0.4)"
}
]
}关键点:
-
scope必须是comment,否则会误匹配字符串字面量里的"TODO" -
regex中的要写成\b(JSON 字符串需双反斜杠转义) -
style选fill比underline更易识别,尤其在小字号或高密度注释中 -
color推荐用hsla()或十六进制,避免某些主题对rgb()解析异常
颜色不生效?先查配色方案是否支持该 scope
即使插件配置正确,如果当前 color_scheme 没定义 keyword.other.todo 或类似 scope 的颜色规则,依然显示为默认注释灰。验证方法:
- 把光标放在一个已高亮的
TODO上,按Ctrl+Shift+P→ 输入并执行Developer: Show Scope Name - 看底部是否出现类似
keyword.other.todo的 scope 名 - 如果没有,说明插件没打上 scope,检查
scope值是否写错(比如误写成comments) - 如果有,但颜色还是不对,说明主题缺定义——换用
Monokai或Ayucia主题立刻能验证
别碰语法文件,除非你真需要作用域级控制
有人想通过修改 .sublime-syntax 文件给 TODO 单独提升 scope,这可行但没必要。它要新建覆盖语法、写 match 规则、处理不同语言的 comment scope 差异(如 comment.line.double-slash.js vs comment.line.number-sign.python),还容易和插件冲突。对绝大多数人来说,Highlight 插件 + fill + 正确 scope 就是稳态解。
真正容易被忽略的是:高亮只作用于注释内。如果你把 TODO 写在字符串或正则字面量里,它不会被匹配——这不是 bug,是设计使然。要盯住这个边界,比调颜色更重要。

















