误删单元格后按z可恢复(需先esc进入命令模式);未运行代码不存于%history;删文件查回收站;所有恢复依赖notebook进程持续运行。

误删单元格后按 Z 恢复(命令模式下)
只要没关 Notebook 窗口,误删或剪切的单元格基本都能立刻拉回来。关键不是 Ctrl+Z,而是先按 Esc 进入命令模式(左侧边框变蓝),再按 Z —— 这个操作专为撤销「单元格级」操作设计,比如删除、移动、合并。
常见错误现象:
-
Ctrl+Z没反应?那是编辑模式下的快捷键,只管单元格内部文字修改,对删掉整个单元格无效 - 按了
Z没恢复?确认当前光标不在任何单元格里(即没绿色边框),否则你还在编辑模式 - 连续删了多个单元格?可以连续按多次
Z,逐个倒序恢复
已运行过的代码用 %history 找回来
如果单元格真没了,但那段代码你曾经 Shift+Enter 运行过,它就留在内核历史里。新建一个代码单元格,输入并运行:
%history
就能列出所有执行过的命令(按时间倒序)。常用变体:
-
%history -n 10:只看最近 10 条 -
%history -f saved.py:把全部历史导出到saved.py文件,方便后续复制
注意:未运行过的代码(哪怕写完没点运行)不会出现在 %history 里,这个机制只记录实际执行过的语句。
删的是整个 .ipynb 文件?先查回收站和 Trash 目录
如果是从 Jupyter 文件浏览器里直接点了「删除」,而不是删单元格,那文件可能还在系统回收站里。不同环境路径不一样:
- Windows:打开回收站,找
*.ipynb文件 - macOS:废纸篓里搜索 notebook 名字
- Linux / 远程服务器:
/home/$USER/.local/share/Trash/files/或/root/.local/share/Trash/files/(取决于启动 Jupyter 的用户)
找到后右键还原,再刷新 Jupyter 页面即可重新加载。别急着清空回收站——Jupyter 不会二次确认,删完就走。
locals()['In'] 是备选,但有局限
有些老教程推荐用:
for line in locals()['In']: print(line)
它确实能打印所有已执行的输入历史,但有两个硬伤:
- 跳过空行和注释,格式混乱,不适合直接复用
- 如果重启过 kernel,
locals()['In']就清空了,而%history在某些配置下还能保留更久
所以优先用 %history,只在 %history 报错或不可用时才试这个。
真正容易被忽略的点是:所有恢复手段都依赖「Notebook 进程仍在运行」。一旦关闭浏览器标签页、杀掉 kernel、或重启 Jupyter 服务,命令模式的 Z 和内核历史就全失效了。留个习惯:写几段就 Ctrl+S,别等最后保存。











