Todo Tree 默认不识别“待优化”等中文标记,因其仅匹配英文大写关键词(TODO、FIXME、BUG),需手动配置 todo-tree.regex.regex 正则并正确转义、添加中文词,同时确保文件语言模式正确识别。

Todo Tree 默认不识别“待优化”这类中文标记,必须手动配置正则和语言支持,否则写完注释也不会出现在侧边栏。
为什么 // 待优化 不会显示在 Todo Tree 中
插件默认只匹配英文大写关键词(TODO、FIXME、BUG),且对中文、小写、带空格或标点的变体完全无视。你写 // 待优化 或 # 待优化,它连扫描都不扫——不是漏了,是压根没认出来。
常见错误现象:
– 保存文件后侧边栏空着,todo-tree.tree.showTags 已开启但无反应
– 搜索 todo-tree.general.tags 配置,发现值仍是默认的字符串数组 ["TODO", "FIXME", "BUG"],没包含中文
– 在 TypeScript 或 Vue 文件里写中文注释,结果连语法高亮都失效,更别说被扫描
- VSCode 默认语言模式影响解析:如果
.vue文件右下角显示的是Plain Text而非Vue,注释根本不会被当作有效注释处理 -
todo-tree.general.tags是字符串数组,只支持英文关键词;要匹配中文,必须改用todo-tree.regex.regex - 正则中若未转义
/或*,整个插件可能静默失效(比如写成/* 待优化 */却没双反斜杠转义/*)
如何让 Todo Tree 扫描 // 待优化 和 # 待优化
核心是替换默认正则,覆盖掉插件内置的英文关键词逻辑。直接改 settings.json:
"todo-tree.regex.regex": "(//|#|/\*|^)\s*(TODO|FIXME|BUG|@todo|待优化|需优化|建议重构|性能瓶颈)"
注意几个硬性细节:
-
/\*必须双反斜杠转义,单个/*会导致正则语法错误,插件停止工作 -
待优化等中文词直接写进括号里,和英文关键词并列,不要加引号或额外修饰 - 如果项目混用大小写(如
// 待优化和// 待优化:),建议加(?i)开头:"(?i)(//|#|/\*)\s*(TODO|待优化|...)" - 避免写
^.*待优化这类贪婪匹配——它会把整行当标签,导致跳转定位偏移到行首而非文字起始处
在 .vue / .tsx 文件中写中文待办仍不生效?检查语言绑定
即使正则写了中文,如果 VSCode 没把文件识别为对应语言,注释就不会被提取。比如 .vue 文件被当成 Plain Text,// 就不是合法注释符号,正则根本没机会运行。
- 点击 VSCode 右下角语言模式,手动切换为
Vue(不是HTML)或TypeScript React(不是TypeScript) - 在
.vscode/settings.json中显式声明支持的语言:"todo-tree.general.tags": ["vue", "typescriptreact", "javascript"] - 若用自定义后缀(如
.page.ts),先在files.associations绑定语言:"*.page.ts": "typescript"
排除 node_modules 后还是卡顿?别只靠 excludeGlobs
todo-tree.filtering.excludeGlobs 只控制“显示”,不阻止文件读取。遇到 node_modules/.vite/deps 这种几万个小文件目录,插件仍会逐个打开扫描,CPU 直接拉满。
- 真正有效的做法是用
todo-tree.general.includeGlobs白名单限定范围:["**/*.ts", "**/*.js", "**/*.vue", "**/*.tsx"] - 搭配
todo-tree.general.scanMode设为openFiles,只扫描当前已打开的文件,适合大型单体仓库临时排查 - 团队协作时,把
includeGlobs和正则一起写进.vscode/settings.json,避免成员各自配置不一致
最常被忽略的一点:正则里的捕获组顺序决定跳转光标位置。如果你的正则把 // 也包进第一个分组,点击树节点时光标会停在斜杠上,而不是“待优化”三个字开头——这会让开发者反复怀疑是不是插件坏了,其实只是正则多套了一层括号。


















