PhpStorm 的 TODO 功能需手动配置作用域、模式、过滤器三层才能高效使用:作用域决定扫描范围,模式定义匹配规则,过滤器控制显示视角,缺一不可。

PhpStorm 的 TODO 功能不会自动区分你的待办和别人的待办,也不会按优先级或负责人归类——它只忠实地匹配正则、扫描文件、列出注释。想让它真正帮你管任务,必须手动配三层:作用域(Scope)、模式(Pattern)、过滤器(Filter)。
为什么刚写的 // TODO 不出现在 Alt+6 窗口里
常见原因不是代码写错了,而是索引没就绪或作用域锁死了范围。
- 右下角显示
Indexing…时,TODO 视图不会更新;可手动执行File > Reload project from Disk - 作用域设成了
Current File或某个自定义范围,但你实际想看整个项目 → 点击 TODO 窗口右上角漏斗图标,确认 Scope 是All Places或你新建的合理范围(如Project Files) -
Show TODOs from non-project files被勾选了 → 这会让vendor/、node_modules/里的第三方 TODO 全部混进来,关掉它 - 注释格式不合规:
// TODO后必须跟空格或冒号,//TODO(紧贴)在部分版本中不触发索引
如何让 TODO 只扫自己写的代码(比如 src/ 和 app/)
靠正则硬拦 vendor 是下策;用作用域精准限定目录才是稳定解法。
- 打开
Alt+6→ 点右上角漏斗图标 → 切换到Scope Based - 点齿轮图标 →
Configure Scopes→+ Add Scope - 名称填
My Code,Pattern 填完整路径表达式:file:src/**/*.*;file:app/**/*.*;file:config/**/*.*(注意file:前缀和/*.*后缀不能省) - 保存后,在 TODO 窗口顶部下拉菜单中切换到这个新 Scope
- 如果目录结构变了(比如新增
core/),记得回头补进 Pattern,否则新目录下的 TODO 不会被收录
怎么识别 // todo 小写、// 待办 中文、或带标签的 // TODO(backend)
默认只认大写 TODO、FIXME、XXX,自定义模式得自己加,且正则写错会静默失效。
立即学习“PHP免费学习笔记(深入)”;
- 路径:
Settings > Editor > TODO(macOS 是Preferences > Editor > TODO) - 点
+新增 Pattern,例如:Pattern: \b(todo|待办|fixme):?\b Case insensitive: ✅ Color: 设个醒目色(否则编辑器里不高亮)
- 要提取括号内标签(如
// TODO(urgent): 修复登录),用带分组的正则:// TODO\((\w+)\):\s*(.*),并勾选Group by pattern - 改完必须点
Apply(不是OK),否则规则不生效;改完还要关掉再开一次 TODO 窗口(Alt+6关 → 再按一次),强制重扫
过滤器建好了,双击却打不开文件或跳错位置
这不是过滤器的问题,是注释上下文或缓存没同步。
- 多行 TODO 必须启用设置:
Settings > Editor > TODO > Treat the indented text on the following lines as part of the same TODO - 注释里有换行、缩进不一致、或用了
/* */但没对齐开头,可能导致光标停在第一行而非实际逻辑行 - 修改过滤器或模式后,旧缓存仍在 → 关掉 TODO 窗口(
Alt+6再按一次),重新打开,它才会全量重扫 - 快捷键
Ctrl+Alt+T跳转依赖当前窗口焦点:光标必须在编辑器内,不在搜索框、侧边栏或终端里才有效
真正卡住项目的,从来不是没写 // TODO,而是写了却分散在 vendor 里、跳不到正确行、分不清谁该处理。Scope、Pattern、Filter 这三层不是并列配置,而是嵌套依赖关系——Scope 定边界,Pattern 定语法,Filter 定视角,少一层,就容易漏或乱。



















