误删单元格可按esc进入命令模式后连按z键恢复;未运行代码jupyter不记录,无法通过%history找回;已运行代码可用%history命令查看或导出。

没保存的代码,只要 Notebook 进程还在、窗口没关,基本都能找回来——但方式完全不同:删掉的单元格靠快捷键 z 撤销,没运行过的代码根本不会被记录,而真正“未保存”指的是你写了但没点运行、也没手动保存,这种只能靠编辑器缓存或系统临时文件,Jupyter 本身不存。
误删单元格后怎么立刻恢复
这是最常见也最容易救的情况:你按了 Ctrl+X 或右键删了某个 cell,但还没关页面、没重启内核。
- 先按
Esc进入命令模式(左侧边框变蓝) - 再连续按
z键(不是Ctrl+Z),每按一次恢复一个被删的 cell - 这个操作只对“已删除但未关闭 notebook”的操作有效;一旦刷新页面或重启 kernel,就彻底失效
- 如果删的是多个 cell,
z可多次按,顺序是逆向的(最后删的最先恢复)
代码写完没运行,也没保存,还能找吗
不能。Jupyter 的 %history 和 locals()['In'] 都只记录“已执行”的代码。光写在 cell 里、没按 Shift+Enter 或 Ctrl+Enter,Jupyter 就当它不存在。
- 浏览器可能保有未提交的 DOM 内容(比如你刚打完字、光标还在里面),可尝试撤销输入:
Ctrl+Z在编辑模式下有时管用 - 检查浏览器开发者工具 → Elements 标签页,搜索
cell_type="code",看对应 cell 的source字段是否还残留着原始文本(某些版本会延迟清空) - 别关页面、别刷新,先截图或手抄关键逻辑,再考虑其他补救手段
运行过但删掉了 cell,怎么找回历史代码
只要你曾经执行过那行代码,它大概率还在内存里,只是不在当前 notebook 结构中了。
- 新建一个 code cell,输入
%history并运行,会打印出所有已执行命令(包括带换行的多行语句) - 想导出到文件?用
%history -f backup.py,生成纯 Python 脚本 - 只查最近 20 条?用
%history ~1/1-20(语法略怪,但有效) - 注意:
%history不包含未执行的注释、空行、Markdown 内容;且重启 kernel 后历史清空
文件被删或 notebook 损坏怎么办
如果是整个 .ipynb 文件从目录里消失了,先别慌着装恢复软件。
- 去系统回收站翻一遍——Jupyter 删除文件走的是系统 API,90% 以上直接进回收站
- 如果用了 Git,
git fsck或git reflog可能捞回未 push 的 commit - 文件损坏(比如断电后打不开,报
NotJSONError),用文本编辑器打开它:只要 JSON 结构没全乱,手动删掉末尾乱码、补上},常能抢救大部分source数组 - 别依赖自动保存:Jupyter 的 autosave 默认 120 秒,中间崩了就丢;养成
Ctrl+S习惯,或改小 autosave 间隔(需改配置)
真正难救的是那种:写了大段代码、没运行、没保存、又切走了 tab、浏览器还自动休眠了——这时候连 DOM 缓存都没了,唯一指望是操作系统级的内存转储或第三方剪贴板历史,但成功率极低。所以,写两行就 Shift+Enter 一下,不是矫情,是保命。











