Sublime Text 不记录编辑位置,只保存跳转位置;打开文件时恢复光标需禁用 hot_exit(设为 false)并依赖会话机制;Ctrl+U/Ctrl+Alt+← 操作跳转栈(上限16条),不响应编辑行为,真定位修改行需 GitGutter 等插件。

Sublime Text 不记录“上次编辑位置”,只记录“上次跳转位置”;打开文件时默认光标停在顶部,要让它停在上次关闭时的位置,得靠会话(Session)机制,不是靠跳转历史。
为什么 Ctrl+U / Ctrl+Alt+← 不能回到你刚改过的那行
这些快捷键操作的是 jump_list(跳转栈),它只收录主动导航行为:比如 F12 跳转到函数定义、Ctrl+P 打开文件后点击某行、Ctrl+F 查找后按 Enter 进入匹配项。单纯打字、方向键移动、滚动页面——这些都不会进栈。所以你改完第 42 行按 Ctrl+U,大概率跳回的是 5 分钟前点过的某个 import 行,而不是你刚删掉的那行。
- 跳转栈上限是 16 条,满后旧条目被丢弃
- 重启 Sublime 后,
jump_list清空,但会话(Session)不丢 -
Ctrl+U和Ctrl+Alt+←功能完全等价,只是不同键位映射
怎么让 Sublime 打开文件时自动回到上次光标位置
这依赖 hot_exit 和 remember_open_files 配合工作,不是插件或快捷键能解决的。
- 必须把
"hot_exit": false(不是true),否则 Sublime 会跳过会话保存流程 -
"remember_open_files": true是默认值,但建议显式写在用户设置里,避免被插件覆盖 - 退出必须用
Ctrl+Q或窗口关闭按钮,不能杀进程、不能断电、不能强制 quit - 会话文件路径:
Local/Auto Save Session.sublime_session,每次正常退出都会更新它
真想定位“上一次修改的代码行”,只能靠插件
原生功能做不到。Sublime 没有编辑历史(edit history)概念,只有跳转历史(jump history)和会话状态(session state)。
-
GitGutter插件会在行号旁显示+/~/-,配合Ctrl+Shift+Alt+→可跳到下一个修改行 -
ChangeMark更轻量,只高亮修改行,不依赖 Git - 手动书签:用
Ctrl+K Ctrl+Space打标记,Ctrl+K Ctrl+Enter跳转,适合关键修改点 - 别信“SublimeHistory”这类名字带 History 的插件——它们多数只是增强跳转栈可视化,不记录编辑行为
容易被忽略的关键点
很多人反复试 Ctrl+U 失败,是因为没意识到:它只响应「跳转」,不响应「编辑」;而真正管用的会话恢复,又卡在 hot_exit: false 这个反直觉设置上。另外,插件如 GitGutter 的修改标记默认只对已 commit 或 staged 的文件生效,新文件/未跟踪文件需要额外配置 "show_gitgutter_on_untracked": true 才能看见标记。











