todo highlight 插件默认仅识别大写紧贴注释符的 todo/fixme/xxx;关键词不生效主因是字段名错误(应为 todohighlights.keywords 而非 todo.highlight.keywords),且需正确配置 languages 和 include 才支持 .vue/.md 文件。

TODO Highlight 插件默认只高亮 TODO、FIXME、XXX 这三个大写、紧贴注释符的词,其他形式(比如小写、带空格、带冒号、写在 .vue 或 .md 里)基本不会触发——不是插件坏了,是它根本没扫到。
为什么改了 keywords 还不生效
最常见原因是字段名写错或被覆盖:todo.highlight.keywords 是旧版字段名,2026 年多数用户实际用的是 todoHighlights.keywords(注意中间没有点)。VSCode 设置里一旦拼错一个字母,整个配置就静默失效。
- 打开命令面板
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON) - 确认你加的是
"todoHighlights.keywords",不是"todo.highlight.keywords"或"todo.keywords" - 检查项目根目录下是否有
.vscode/settings.json,它会覆盖全局设置;临时重命名该文件测试是否恢复 - 关键词必须是对象数组,每个对象含
text字段,例如:{"text": "REVIEW", "color": "#007acc"},不能只写字符串"REVIEW"
为什么 .vue / .md 文件里不亮
TODO Highlight 默认跳过非编程语言文件,.vue 单文件组件会被识别为 vue 语言,但前提是 VSCode 右下角状态栏显示的是 Vue(不是 HTML);.md 文件里的代码块也不会扫,因为插件默认只处理注释上下文,不解析字符串字面量。
- 在
settings.json中补全"todoHighlights.languages":值设为["javascript", "typescript", "vue", "markdown"] - 确保
.vue文件右下角语言模式是Vue;如果不是,点击切换,或在文件顶部加// @ts-check等提示语帮 VSCode 推断 - 想让
.md中的<!-- TODO -->或代码块内文本也被扫描,得加"todoHighlights.include": ["**/*.md"],并确认languages包含markdown
高亮了但光标跳转错位(停在 // 上)
这是正则捕获组没对齐导致的。插件靠正则提取关键词后的文字内容作为跳转锚点,如果正则把注释符号也包进去了,光标就落偏了。默认正则通常没问题,但一旦你自定义了 todoHighlights.regex,就很容易踩坑。
- 除非必要,别动
regex配置;优先用keywords数组方式扩展 - 如果必须用正则,确保只捕获 tag 后的文字部分,例如:
/(//|#)\s*(TODO|FIXME):?\s+(.*)$/,其中(.*)是第 3 组,才是跳转目标 - 避免写成
/(// TODO)/这种全匹配式正则,它会把//一起捕获,导致光标卡在斜杠上
真正麻烦的不是配不配得出来,而是不同项目里 .vscode/settings.json 和全局 settings.json 的字段名、路径、语言列表经常混着用,稍不注意就互相压制。建议先清掉所有 todo 相关字段,从最简配置起步:todoHighlights.keywords + todoHighlights.languages + todoHighlights.include,再逐步加颜色和正则。











