匿名书签通过F11快速切换当前行标记,Ctrl+Shift+F11顺序跳转;命名书签需Ctrl+Shift+F11命名后用Shift+F11全局检索跳转;TODO注释依赖正则匹配和索引,与书签机制完全不同。
怎么用匿名书签在单个文件里快速跳转
匿名书签是最快上手的定位方式,适合临时标记几处关键行,比如刚读完的入口函数、刚改完的配置块、或者正在调试的断点附近。它不命名、不跨文件、不进列表,但按一次就生效,再按一次就取消。
(Windows/Linux)或
(macOS)直接切换当前行的书签状态,左侧标记栏出现蓝色小书本图标即成功
按
(Win/Linux)或
(macOS)可在当前文件内顺序跳转所有匿名书签——注意:它不分命名/匿名,只按行号从上到下扫一遍
删了那行代码,书签自动消失;关掉文件再打开,书签还在;但换台电脑或重装 IDE,它不会同步——因为它只存在本地
里
常见错误:光标停在空行或注释行上按
,结果跳转时发现“没反应”,其实是跳过去了,只是那行没内容,视觉上不明显;建议跳转后按
或
确认光标位置
怎么建带名字的书签并跨文件跳转
命名书签才是真正能支撑中大型项目导航的工具,尤其当你需要在
、
、
之间频繁切换时。它靠名字检索,支持模糊匹配,且能出现在
全局列表里。
先定位到目标行,然后按
(Win/Linux)或
(macOS),输入纯字母/数字/下划线组成的简短名,比如
或
名字别带空格或特殊符号,否则 IDE 可能截断或报错;也不要用太泛的词如
或
,容易在多文件中重复,导致
列表里一堆同名项分不清
打开列表后,直接输前几个字母就能过滤,比如输
就列出所有含该前缀的命名书签;回车即跳转,右窗格还会预览那行上下文
命名书签删除只能通过列表操作:打开
→ 右键目标项 →
;不能靠快捷键一键清除,这点和匿名书签不同
TODO 注释为什么没出现在 Alt+6 窗口里
TODO 不是书签,它是基于正则扫描的注释聚合机制,不依赖手动标记,但极度依赖格式和索引状态。很多开发者写了 // TODO 却看不到,不是功能坏了,而是匹配条件没满足。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
默认只识别
、
、
这三种开头(注意冒号后必须有空格,
不匹配)
多行注释
默认不触发;小写
也不会被扫到,除非你在
里勾选
(macOS 是
)打开的窗口是静态快照,不是实时搜索。改了注释后没立刻出现?先关掉再重开一次窗口,强制触发重新索引
如果项目用了
或
,检查右上角漏斗图标里的
是否关闭——关了就只扫你自己的代码目录
书签和 TODO 根本不是一回事,别混着用
这是最容易长期误用的一点:有人把书签当 TODO 用(比如给一行
加个书签),也有人把 TODO 当书签用(指望靠搜 TODO 跳转到某段逻辑)。它们底层机制、生命周期、适用场景全都不一样。
立即学习
“
PHP免费学习笔记(深入)
”;
书签是「位置锚点」:绑定具体某一行,删了那行,书签自动消失;它不关心内容,哪怕那行是
,只要你想反复看,就能打书签
TODO 是「语义线索」:靠正则匹配注释文本,不绑定物理行号;你把
剪切粘贴到另一行,它照样被扫出来;但删掉这行注释,下次索引就没了
书签随 IDE 配置存本地,不进 Git;TODO 注释是代码一部分,天然可协作、可审查、可追踪变更历史
真正难的是边界感:比如一个待办事项已明确要改某函数,那就用
+ 提交;如果只是临时想回头再看看这个 if 分支怎么写的,就打个匿名书签——别让 TODO 列表变成“未读消息堆”,也别让书签列表变成“废弃锚点坟场”
F11Cmd + F11Ctrl + Shift + F11Cmd + Shift + F11.idea/workspace.xmlF11HomeEndAuthController.phpconfig/app.phpdatabase/migrations/Shift + F11Ctrl + Shift + F11Cmd + Shift + F11auth_middlewaredb_seed_initfixtodoShift + F11Shift + F11authShift + F11Remove Bookmark// TODO // FIXME // XXX // TODO:/* TODO ... */// todoSettings > Editor > TODOCase insensitiveAlt + 6Cmd + 6vendornode_modulesShow TODOs from non-project files// TODO$x = 1;// TODO// TODO refactor loginCheck()