todo highlight 插件默认仅识别 todo/fixme/xxx 且不支持 .vue/.md/.json 等文件,需手动配置 keywords、languages 及正则;插件未启用、设置覆盖或字段名错误(如 todohighlights.keywords 写成 todo.highlight.keywords)是常见原因。

TODO 注释默认不会高亮,装了 TODO Highlight 插件也不行——根本原因不是插件没装对,而是它默认只认 TODO、FIXME、XXX 这三个词,且不自动扫描 .vue、.md 或 .json 等非标准语言文件。
为什么装完插件后 // TODO 还是灰色?
最常见原因是插件未启用,或被工作区设置覆盖。检查右下角状态栏是否显示“TODO Highlight”字样;若无,说明插件根本没加载。
确认方式:按 Ctrl+Shift+P 输入 TODO: List,如果命令不可用,插件大概率处于禁用状态。
- 打开扩展面板(
Ctrl+Shift+X),搜TODO Highlight,确认作者是wayou,右侧按钮显示“已启用” - 检查
.vscode/settings.json是否有"todo.highlight.isEnable": false这类显式禁用项 - 重启 VSCode 后再试——某些版本插件需完整重载才能挂载到 TextDocument API
如何让 REVIEW / BUG / HACK 也高亮?
插件默认关键词列表是硬编码的,自定义标记必须手动加进 todo.highlight.keywords(旧版)或 todoHighlights.keywords(2026 年起主流版本)。字段名错一个字母就完全失效。
打开 Preferences: Open Settings (JSON),插入如下结构(注意:不是数组直接写字符串,而是对象数组):
"todoHighlights.keywords": [
{"text": "TODO", "color": "#ff8c00"},
{"text": "FIXME", "color": "#ff3b30"},
{"text": "REVIEW", "color": "#007acc"},
{"text": "BUG", "color": "#ff2d55"},
{"text": "HACK", "color": "#ff6b6b"}
]
-
text值必须全大写、无空格、无标点;// REVIEW:和# BUG都能匹配,但// review不会触发 - 若用的是较老版本插件(如 2024 年发布的),字段名可能是
todo.highlight.keywords,可两个都试一遍 - 保存后无需重启,但已打开的文件要手动重新打开一次才能刷新高亮
为什么 .vue / .md / .json 里的 TODO 不高亮?
TODO Highlight 默认只扫描 javascript、typescript、python 等语言 ID 对应的文件,.vue 被识别为 vue,.md 是 markdown,.json 是 json —— 这些都不在默认白名单里。
补全语言支持只需一行配置:
"todoHighlights.languages": ["javascript", "typescript", "python", "vue", "markdown", "json"]
-
.vue文件必须确保右下角状态栏显示“Vue”而非“HTML”,否则插件按html处理,得把html也加进去 -
.md中的代码块(如 ```js)默认不扫描,因为插件只处理注释上下文;若真需要扫代码块里的字符串字面量,得额外配todoHighlights.include加"**/*.md"并配合正则 -
.json文件本身无注释语法,但若用了.jsonc,语言 ID 是jsonc,需单独加入列表
高亮了但点击跳转光标停在 // 上而不是文字开头?
这是正则捕获组写错的典型表现。插件靠正则提取关键词后的描述文本作为跳转锚点,如果正则把 // 或 # 也包进捕获组,光标就会落在注释符号上。
默认正则一般没问题,但一旦你自定义了 todoHighlights.regex,就极易出错。例如错误写法:
/(//|#)\s*(TODO|FIXME|REVIEW)/
这个正则会把 // 和 TODO 一起捕获为第 1 组,导致跳转位置偏移。
- 正确写法应只捕获 tag 后的内容,比如:
/(//|#)\s*(TODO|FIXME|REVIEW):?\s+(.*)$/,其中(.*)是第 3 组,才是跳转目标 - 如果你没动过正则,却出现跳转错位,大概率是其他插件(如
Better Comments)干扰了注释解析顺序 - 临时验证方式:删掉所有自定义
regex配置,仅保留keywords和languages,看是否恢复
真正麻烦的不是配不配得出来,而是不同项目用不同插件(Todo Tree 和 TODO Highlight 配置字段名、正则逻辑、语言识别策略全都不一样),一换项目就得重调一遍。建议团队统一用 Todo Tree 并把 .vscode/settings.json 提交进仓库,避免每人配一套。











