Todo Tree装完必须配置三项:①todo-tree.tree.showTags设为true;②todo-tree.general.tags扩展为包含大小写变体的数组;③todo-tree.regex.regex匹配冒号、括号等场景并双反斜杠转义/*,否则90%待办漏扫、跳转错位、首次扫描卡死。

装完 Todo Tree 不配置,90% 的 TODO 会漏掉、跳转错行、首次扫描卡死十几秒——尤其在 Vue/TSX 项目或含 node_modules 的工程里。
为什么 // todo: 和 // FIXME(john): 就是不显示
默认只认大写 TODO 和 FIXME,且正则不捕获括号和冒号后内容。光改 todo-tree.general.tags 没用,必须同步调正则和大小写开关:
-
todo-tree.regex.regexCaseSensitive设为false,否则// todo:和// TODO:只能匹配一个 -
todo-tree.general.tags必须是数组,比如["TODO", "todo", "FIXME", "fixme", "REVIEW", "review"],字符串或拼写错误直接失效 -
todo-tree.regex.regex要覆盖冒号和括号场景,推荐用:"todo-tree.regex.regex": "(//|#|/\*|^)\s*(TODO|todo|FIXME|fixme|REVIEW|review|BUG|HACK)(?=:|\(|\s|$)"
注意/*要双反斜杠转义,(?=:|(|s|$)确保停在冒号、左括号或空格处,避免跨行抓取
Vue/TSX 文件里的 // TODO: 死活不识别
不是插件问题,是语言支持没打开。Todo Tree 默认只扫描部分文件类型,.vue 和 .tsx 不在白名单里:
- 检查
todo-tree.general.includeGlobs是否包含"**/*.vue"、"**/*.ts"、"**/*.tsx" - 如果用了自定义语言标识(如
<script lang="ts">),还得确认 VSCode 当前文件的语言模式是否正确(右下角状态栏点开看是不是TypeScript Vue) - 别依赖
**/*全扫——它可能被excludeGlobs优先过滤掉,显式加白名单更稳
点击侧边栏条目跳转失败,报 File not found
路径解析错位,常见于符号链接、WSL、Git 子模块或远程开发容器中:
- 先确认当前工作区根路径是否是你预期的目录(
File > Open Folder看路径) - 如果是 WSL 或容器环境,检查
todo-tree.ripgrep.ripgrepArgs是否需要加--glob或调整路径映射参数 - 临时验证:右键侧边栏任意条目 →
Copy File Path,粘贴到终端看文件是否存在;若路径含/mnt/c/...但实际在/home/...,就得配todo-tree.filtering.pathSubstitutions
大型项目首次扫描慢、CPU 占满、VSCode 卡顿
根本原因是没关掉无意义的扫描范围。Todo Tree 默认用 ripgrep,但没排除规则时会硬扫整个工作区:
- 必加
todo-tree.filtering.excludeGlobs:"**/node_modules/**", "**/.git/**", "**/dist/**", "**/build/**", "**/out/**", "**/*.d.ts"
- 慎用
todo-tree.tree.scanMode: "workspace"——10 万行以上项目建议先设为"open files only",再逐步放开 - 检查
rg --version输出,确保系统已安装 ripgrep;macOS 用brew install ripgrep,Windows 建议用 Scoop 或官方二进制
最易忽略的一点:所有配置改完,必须右键侧边栏空白处选 Todo Tree: Refresh,否则新正则、新标签、新路径规则全不生效——这个动作不会自动触发,也不随保存文件发生。


















