vscode无内置“锚点”功能,实际支持三种独立定位机制:bookmarks(行号标记)、// anchor:注释标签(需vscode-comment-anchors插件)、markdown标题自动锚点;三者互不兼容,须按需求选用。

VSCode 里没有内置“锚点”概念,别搜错关键词
你搜“锚点”找不到功能,是因为 VSCode 本身不叫这个名。它实际支持的是三种定位机制:Bookmarks(行号标记)、// ANCHOR: 注释标签、以及 Markdown 的 # 标题跳转。三者互不兼容,不能混用。搜“锚点”时,引擎常把 Markdown 目录、HTML id 锚点、插件注释标签全搅在一起,结果越查越乱。
想快速列出当前文件所有注释锚点,装 vscode-comment-anchors 插件
这是目前唯一能自动识别 // ANCHOR:、// TODO: 这类注释并聚合展示的方案。装完后左侧活动栏会出现锚点图标,点击就能看到当前文件里所有匹配的注释行。
- 默认识别
ANCHOR、TODO、FIXME、NOTE四种标签,可自定义——改commentAnchors.tags配置项 - 不依赖行号,靠正则匹配注释内容,代码移动后仍有效
- 不支持跨文件聚合,只显示当前打开文件的锚点
- 如果列表为空,先确认文件语言模式是否被正确识别(比如 .js 文件没被当成 JavaScript,插件就不会触发)
用 Ctrl+Shift+O 查符号不如用 Bookmarks 列表精准
Ctrl+Shift+O 跳的是 LSP 解析出的函数/类名,不是你手动标记的位置。如果你要找的是“上周加的那个调试断点位置”或“配置入口函数的第一行”,它根本不会出现。
- 真正对应“人工锚点”的是
Bookmarks: List(快捷键Ctrl+Alt+L) - 它支持模糊搜索:输函数名、注释片段、甚至文件路径片段都能匹配
- 但注意:它只存
lineNumber+filePath,重构删行后书签就失效,不会自动下移 - 若列表为空,检查
"bookmarks.persistAll": true是否已写入.vscode/settings.json
Markdown 文件里跳标题锚点,别手动写 HTML id
VSCode 的 Markdown 预览自动为 # 标题 生成锚点,格式是 #标题文字(空格转短横,中文保留)。不用手写 <h2 id="xxx"></h2>。
- 跳转写法:
[点这里](#标题文字),预览模式下点击即可生效 - 标题含特殊字符(如括号、冒号)时,VSCode 会自动剔除,不要照抄渲染后的 URL
- 这个机制只在
.md文件且开启预览时工作,纯编辑器模式下不响应 - 别指望它在 .ts/.py 文件里起作用——那是完全不同的系统
真正麻烦的不是怎么列出来,而是每次打开文件都得判断:这次要找的是语义锚点(注释)、行号锚点(Bookmarks),还是文档结构锚点(Markdown 标题)。三套机制各自维护,互不感知,也没统一入口。选错类型,再快的查找也跳不到你要的位置。











