VSCode原生不支持带序号的多点书签,需通过Bookmarks扩展实现标记→跳转→回溯→再跳转;标记轻量、不侵入文件,依赖快捷键(如Ctrl+Alt+K打标、Ctrl+Alt+J跳转),默认不持久化,需开启persistent选项保存。

什么是代码标记(Bookmark)和它在VSCode里的定位
VSCode原生不支持传统IDE那种带序号的多点书签(比如bookmark1、bookmark2),但通过扩展可以实现「标记→跳转→回溯→再跳转」的循环导航。核心不是靠内置功能,而是依赖Bookmarks扩展(alefragnani.bookmarks)——它把光标位置存为轻量标记,不侵入文件,也不需要注释语法。
安装并启用Bookmarks扩展后怎么打标记和跳转
装好Bookmarks扩展后,快捷键直接生效(Windows/Linux默认Ctrl+Alt+K,macOS是Cmd+Option+K)。每按一次就在当前行打一个标记;再按一次取消。标记本身不显示图标,但状态栏会提示「Bookmarked」。
- 跳转到下一个标记:用
Ctrl+Alt+J(macOSCmd+Option+J) - 跳转到上一个标记:用
Ctrl+Alt+L(macOSCmd+Option+L) - 清除所有标记:运行命令
Bookmarks: Clear all bookmarks - 查看所有标记列表(带文件名和行号):运行
Bookmarks: List bookmarks,选中即可跳转
为什么不能用「Go Back/Forward」代替标记跳转
Go Back(Alt+←)走的是编辑器访问历史栈,依赖光标移动、文件切换等操作触发记录;而标记跳转是主动锚定位置,不受中间是否打开新文件、是否触发自动保存等干扰。典型反例:
- 你在
utils.ts打了标记A,在api.ts打了标记B,然后切去README.md查文档——此时Go Back会先回到README.md,而不是跳到B - 你在同一文件里快速上下滚动多次,
Go Back栈会塞满临时位置,标记则始终只响应你明确打下的那几个点 - 标记支持跨工作区(multi-root workspace)跳转,
Go Back只在当前窗口内有效
容易被忽略的配置细节和兼容性问题
默认情况下,Bookmarks扩展不会持久化标记——关掉VSCode再打开,所有标记就没了。如需保留,必须手动开启:
- 在设置里搜
bookmarks.persistent,勾选Enable persistent bookmarks - 启用后,标记会存在
$HOME/.vscode/extensions/alefragnani.bookmarks-*/bookmarks.json(路径随版本变),不进Git,也不影响项目文件 - 如果用了Remote-SSH或Dev Containers,标记默认不跨连接同步;需在远程环境里单独安装扩展并开启
persistent - 别和
TODO Highlight类扩展混淆——它们高亮注释但不提供跳转链路,也不能循环遍历
标记跳转真正有用的地方,是在重构长函数、跟踪异步调用链、或者比对多个配置文件字段时——你不需要记住哪一行,只要打完标记,Ctrl+Alt+J一路按下去就行。但得记得:它不记录顺序,只记录存在;跳转逻辑是「最近插入位置优先」,不是严格FIFO。


















