sublime text 默认不识别 todo/fixme,需启用内置 todo 插件并配置 keywords、regex 及 symbol_index_files 才能实现高亮与 goto symbol 支持。

Sublime Text 默认不识别 TODO/FIXME,需手动启用语法高亮
Sublime Text 本身不把 TODO 或 FIXME 当作特殊标记处理,它们只是普通注释文本,不会加粗、变色或出现在 Goto Symbol(Ctrl+R)里。要让它们“活起来”,得靠内置的 todo 插件——但它默认是禁用的。
启用 todo 插件并确认语法作用域匹配
Sublime 的 todo 插件依赖当前文件的语法定义(如 source.python、source.js)是否声明了注释作用域(comment.line 或 comment.block)。多数主流语法都支持,但部分自定义或老旧语法包可能漏配。
- 打开
Preferences → Package Settings → Todo → Settings – User - 填入最小必要配置:
{ "todo": { "enabled": true, "highlight": true } } - 保存后重启 Sublime(插件加载在启动时完成,改配置后不重启常无效)
- 检查当前文件右下角语法名(如
Python),再按Ctrl+Shift+P输入Set Syntax: Plain Text试试——如果换成纯文本后高亮消失,说明原语法支持正常;若仍不亮,可能是语法包本身没导出注释 scope
自定义关键词或调整正则匹配范围
默认只识别 TODO、FIXME、XXX 和 HACK,且要求全大写、冒号后带空格(如 // TODO: fix this)。不匹配就看不到高亮。
- 在
Package Settings → Todo → Settings – User中扩展关键词:"keywords": ["TODO", "FIXME", "NOTE", "BUG", "HACK"]
- 若想匹配小写或混合大小写,改
regex(注意转义):"regex": "(?i)\b(TODO|FIXME|NOTE|BUG|HACK)\b[:\s]*"
- 避免过度宽松:比如用
.*TODO.*会误标变量名含todo的行(如const todoList = [];),导致高亮污染
Goto Symbol(Ctrl+R)里不显示 TODO?检查 symbol list 配置
即使高亮正常,Ctrl+R 默认也不索引 TODO 行——这是独立功能,需额外开启。
- 打开
Preferences → Settings – User - 加入:
"index_files": true, "index_workers": 4, "symbol_index_files": ["*.py", "*.js", "*.ts", "*.html", "*.css"]
(按需增减后缀) - 确保
todo插件的todo_symbol_list为true(新版默认开启,旧版可能需显式设) - 首次启用后需等待索引完成(状态栏左下角显示 “Indexing…”),期间
Ctrl+R查不到新条目
真正麻烦的是跨项目符号索引:Sublime 不像 VS Code 那样自动扫描整个工作区的 TODO,它只索引已打开的文件 + 符合 symbol_index_files 规则的路径。关掉的文件、子目录里的未打开文件,都不会进 Ctrl+R 列表。










