sublime书签是纯内存级单文件行号标记系统,f12为唯一可靠开关;ctrl/cmd+f2线性扫描下一行起的书签,bookmarks: show面板支持过滤跳转;书签不持久化,关闭tab或重启即清空。

Sublime 的书签不是“存下来就能用”的功能,它是一套纯内存级、单文件、瞬时生效的行号标记系统——所有快捷键行为都围绕这个前提展开。用错快捷键、跳空、找不到书签,90% 是因为没理解它的运行逻辑,而不是配置或插件问题。
F12 是唯一可靠的书签开关
别试 Ctrl+F2、Cmd+F2 或右键菜单里的 Toggle Bookmark。F12 在 ST3/ST4 所有官方版本中默认绑定,不依赖 Fn 键,不和系统亮度/音量冲突,反馈明确:
- 光标停在任意位置(哪怕在长行中间),按一次
F12,行号旁立刻出现蓝色小点;再按一次,小点消失 - Windows 笔记本上
Ctrl+F2常需Ctrl+Fn+F2才触发,实际可能调音量;macOS 上Cmd+F2默认调亮度,即使开了“标准功能键”,部分 ST4 安装包仍捕获不到 - 右键菜单滚动后极易点错行,尤其在 500+ 行文件里;且无法批量操作
- 别把书签打在空行、全注释行末尾(如
# FIXME: race condition here)或缩进极深的行——Bookmarks: Show面板只截取行首约 30 字,预览为空就无法识别上下文
Ctrl+F2 跳转是线性扫描,不是按添加顺序
Ctrl+F2(Windows/Linux)或 Cmd+F2(macOS)执行的是 next_bookmark 命令,它从当前光标所在行的下一行开始往后扫描,找第一个带书签的行。理解这点才能避免“跳丢了”“卡住了”:
- 光标在第 200 行(本身是书签),按
Ctrl+F2→ 从第 201 行开始搜,不会重复跳自己 - 书签在第 32、187、602 行,光标在第 100 行 →
Ctrl+F2跳到 187,再按跳到 602,再按绕回 32(环形遍历) - 被折叠的代码块(如
if DEBUG:块)不影响跳转——折叠只是视觉隐藏,行号仍在 - 切到另一个 tab 后,原文件所有书签“隐身”,
Ctrl+F2只在新文件里扫描;当前文件没书签时,快捷键静默失败:不报错、不提示、光标不动
Bookmarks: Show 面板才是真管理入口
靠扫行号旁的小点效率极低,还容易漏。真正实用的是命令面板调出的 Bookmarks: Show 面板:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)→ 输入Bookmarks: Show→ 回车,侧边弹出列表,显示每条书签的行号 + 行首约 30 字代码片段 - 支持实时关键词过滤:输入
def,列表自动只留含函数定义的书签;输入TODO就聚焦待办项 - 双击任意条目,光标秒跳转;面板只读,不能重命名、不能拖动排序,但快、准、带上下文
- 清空当前文件所有书签,请用命令面板输入
Clear Bookmarks(不是反复按Ctrl+F2);该操作不可逆,且不影响其他 tab 中的书签
书签关掉就丢,这不是 Bug 是设计
Sublime 的书签本质是内存里的行号数组,不写入文件、不生成配置、不随项目会话持久化:
- 关闭当前 tab → 所有书签清空
- 重启 Sublime → 所有书签清空
- 切换工作区 → 所有书签清空
- 它不跨文件、不跨会话、不记录上下文——只管“我在哪一行”,不管“我为什么在这”。最容易被忽略的一点是:跳转顺序永远按行号升序/降序线性扫描,哪怕第 800 行的书签是你第一个打的,它也只会在所有比当前光标行号大的书签里找最小的那个











