Ctrl+Shift+T 是后进先出的单步弹栈操作,仅恢复最近关闭的文件;需聚焦编辑区、关闭的是固化标签页、无插件冲突;未保存文件不入栈;跨会话恢复依赖 Session.sublime_session 文件。

Ctrl+Shift+T 不是“历史列表”,而是单步弹栈操作
Sublime Text 的 Ctrl+Shift+T(macOS 用 Cmd+Shift+T)默认绑定的是 reopen_last_closed_file 命令,它不维护一个可翻页的历史队列,而是一个**后进先出的栈(LIFO stack)**:每次关闭文件,就把该文件路径压入栈顶;每次按快捷键,就弹出栈顶并恢复——然后这个条目就永久消失了。
- 关了
A.js→B.py→C.css,此时按一次Ctrl+Shift+T只能恢复C.css;再按一次,才恢复B.py;第三次才是A.js - 如果中间又打开了新文件、切换了窗口、甚至只是点了下侧边栏,栈不会清空,但若重启 Sublime,整个栈会被丢弃(除非启用了
hot_exit和remember_open_files) - 未保存的文件(标题带
*)默认不入栈——这是有意设计,防止误恢复脏数据
为什么 Ctrl+Shift+T 按了没反应?常见断点排查
这不是快捷键失效,而是触发条件没满足。最常被忽略的三个前提:
- 焦点必须在编辑区(即光标在代码里闪烁),如果当前聚焦在命令面板、搜索框、侧边栏或状态栏,
Ctrl+Shift+T会静默失败——先按Esc确保退出所有浮层 - 你关掉的不是「正式标签页」:双击侧边栏打开的文件属于「预览标签」,关闭后不计入恢复栈;必须双击后**再按一次 Enter 或点击标签名使其固化**,才能被
reopen_last_closed_file记录 - 插件冲突:某些插件(如
Origami或SideBarEnhancements)会劫持Ctrl+Shift+T绑定。打开Preferences → Key Bindings,搜索"ctrl+shift+t",确认用户设置中只有一条明确指向reopen_last_closed_file
想看完整关闭历史?别依赖 Ctrl+Shift+T,改用 Ctrl+P + “most recently”
原生没有“已关闭文件列表”,但你可以绕过限制:按 Ctrl+P(Cmd+P),直接输入 most recently,Sublime 会调出一个按访问时间倒序排列的全量文件历史面板——它包含所有近期打开过的文件,无论是否已关闭。
- 这个列表默认保留最近 100 个条目,可通过用户设置调整:
"file_history_size": 200 - 支持关键词过滤(比如输
api就筛出api.ts、user_api.py),比菜单里的File → Open Recent(最多 10 条、不可搜)实用得多 - 注意:它记录的是“打开行为”,不是“关闭行为”。所以刚关掉的文件,只要之前打开过,就会出现在这里;但如果它是首次打开就立刻关闭,且未执行过保存或编辑,则可能不会被索引
跨会话恢复已关闭文件?靠 session 文件,不是快捷键
如果 Sublime 已关闭再重开,Ctrl+Shift+T 就完全失效。这时唯一可靠的方式是读取 Sublime 的会话快照文件 Session.sublime_session,它由 hot_exit: true 和 remember_open_files: true 驱动写入。
- 路径位置:
Windows:%LOCALAPPDATA%\Sublime Text 3\Local\Session.sublime_session
macOS:~/Library/Application Support/Sublime Text 3/Local/Session.sublime_session
Linux:~/.config/sublime-text-3/Local/Session.sublime_session - 该文件是 JSON 格式,含
buffers字段,里面存着未保存内容的原始文本(base64 编码)、文件路径、光标位置等——即使没来得及保存,只要没强制杀进程,大概率还在 - 不要手动编辑它;建议用其他编辑器打开,搜索你记得的变量名或函数名,复制出关键片段,再粘贴回新 Sublime 中另存
真正容易被忽略的点是:这个恢复能力完全依赖正常退出。异常崩溃、任务管理器强杀、或者磁盘写满导致 session 写入失败,都会让内容丢失——所以高频编辑时,Ctrl+S 仍是不可替代的第一道防线。










