bookmarks 插件不生效需依次检查:命令是否加载(ctrl+shift+p 查 bookmarks: toggle)、是否安装官方版 alefragnani.bookmarks 并重新加载窗口、右键行号区是否有 toggle bookmark、editor.glyphmargin 是否为 true;跨文件跳转唯一方式是 bookmarks: list all;命名书签(ctrl+alt+shift+k)更抗代码变动;持久化须在工作区 settings.json 中配置 "bookmarks.persistall": true。

Bookmarks 插件不生效?先确认命令是否加载成功
按 Ctrl+Alt+K 没反应,大概率不是快捷键冲突,而是插件根本没加载。打开命令面板(Ctrl+Shift+P),输入 Bookmarks: Toggle —— 如果列表里没有这条命令,说明插件未启用或安装错误。
必须重装作者为 alefragnani 的官方版本(ID 是 alefragnani.bookmarks),安装后点「重新加载窗口」;否则命令绑定不会注册。右键行号区域,检查上下文菜单是否有 Toggle Bookmark 项,这是装饰器 API 就绪的直接证据。
还要确认设置中 "editor.glyphMargin": true 已启用,否则书签图标压根不显示在装订区。
跨文件跳转唯一可靠方式是 Bookmarks: List All
Ctrl+Alt+J 和 Ctrl+Alt+L 只在当前打开的文件内跳转,且只认“最近添加”的那个书签,完全不跨文件。真要跨文件导航,必须用:Ctrl+Shift+P → 输入 Bookmarks: List All → 回车。
列表格式为 文件名:行号 — 代码片段,支持实时模糊过滤(比如输 render 就只留含该词的条目)。选中后回车,VSCode 会自动打开未打开的文件并定位到行。
- 路径含空格或中文未编码时,对应条目会静默消失,不报错也不提示
- 符号链接断裂会导致目标文件无法打开,但列表里仍显示该条目
- 多根工作区下,书签默认隔离在各自根目录内,跨根跳转需手动切换工作区再查
命名书签比行号书签更抗代码变动
直接按 Ctrl+Alt+K 打的书签绑定的是物理行号,一旦上面插入/删除代码,位置立刻错位。改用命名书签:Ctrl+Alt+Shift+K(Win/Linux)→ 输入如 init-state 或 error-handler → 回车。
之后通过 Ctrl+Shift+P → Bookmarks: Jump to Bookmark 选择名称跳转。它会基于当前文件内容匹配最接近的位置,容错性高得多。
注意:
- 命名书签不会出现在 Bookmarks: List All 列表里
- 右键命名书签可重命名或删除,普通书签只能删不能改名
- 跳转时仍需确保目标文件在当前工作区范围内
重启后书签全丢?持久化配置必须写进工作区 settings.json
默认书签只存在内存里,关窗口即清空。持久化不是开个开关就行,必须手动在工作区根目录下的 .vscode/settings.json 中加:
"bookmarks.persistAll": true
这不是用户级设置,漏配一个根目录,那个文件夹下的书签就永远不持久。"bookmarks.persisted": true 是旧版配置项,2026 年起已废弃,设了也无效。
另一个高频丢失原因:删了带书签的整行。VSCode 的书签是绑定到“行”的,不是绑定到“逻辑”,删行即删签——这点容易误判,尤其在重构时。










