如何在 Jupyter Notebook 中恢复意外删除的单元格

chu*_*ung 3 jupyter-notebook

我正在 VSCode 中处理 .ipynb 文件,我尝试使用 ESC + Z 撤消一些行,但出于某种原因,我撤消了太多内容或按下了其他内容,但是我的大约 30 个单元格都被删除了。我不知道如何重做,我害怕我失去了所有的工作!

我怎样才能恢复这些细胞???

谢谢

编辑:我找到了我使用 %history 运行的代码,但我也希望得到我的 Markdown 单元格,因为我在那里写了很多信息

编辑 2:我注意到我的单元格不仅被删除了,而且我的文件实际上只是更改了历史记录中的不同位置,因为我的前几个单元格包含的内容与单元格消失之前不同。这是否完全改变了这个问题的答案?

我确实发布了一个解决方法来恢复一些东西,但如果有人让我知道在我的第二次编辑中发生了什么,我仍然会很感激,谢谢!

Ako*_*kos 32

我找到了一种方法来找回丢失的细胞,这节省了我大量的时间,因为我不必重新创建这些细胞。如果打开时间线(屏幕左下角),您可以回到仍然有这些单元格的时间,复制内容并将其粘贴到新单元格中。更新:如果时间轴不可用,您可能需要升级到最新版本。

  • 你这个传奇!!!从来不知道这个工具的存在:) (2认同)

Use*_*123 18

我遇到了类似的问题,当我认为自己在单元格内部时,我在单元格外部点击了CTRL+ (通常是因为运行当前单元格会使您失去单元格焦点)。Z有时它只是“撤销”笔记本中其他地方最后创建的单元格,而我实际上丢失了一些单元格,因为我没有立即意识到发生了什么并继续工作。

我想我会分享我对这个问题的解决方案(因为谷歌向我发送了这篇文章,更多的人可能会感兴趣)。

重新定义键盘快捷键对我有用。 当我不在单元格内时,我删除了CTRL+Z快捷方式Edit > Undo(您仍然可以使用菜单访问它)。我对CTRL++做了同样SHIFT的事情Z,等等。

为此,我将这些规则添加到我的keybindings.json

{ "key": "ctrl+z", "command": "-undo" },
{ "key": "ctrl+z", "command": "undo", "when": "!notebookEditorFocused || inputFocus" },
{ "key": "ctrl+shift+z", "command": "-redo" },
{ "key": "ctrl+shift+z", "command": "redo", "when": "!notebookEditorFocused || inputFocus" },
{ "key": "ctrl+y", "command": "-redo" },
{ "key": "ctrl+y", "command": "redo", "when": "!notebookEditorFocused || inputFocus" },
Run Code Online (Sandbox Code Playgroud)

我还Z从 Jupyter 扩展中删除了快捷方式,因为我不喜欢它。

{ "key": "z", "command": "-undo", "when": "notebookEditorFocused && !inputFocus" },
Run Code Online (Sandbox Code Playgroud)


Ulr*_*ikP 14

这种情况经常发生在我身上。太烦人了!当我按下或误按下 CMD+Z 时就会发生这种情况。无论使用多少 ESC-Z 都无法重新创建已删除的单元格。到目前为止,任何菜单中都没有重现失落的东西。我已经删除了“删除单元格”的所有快捷方式,但这根本没有区别。仅仅因为这个原因就打算放弃VSCode了。


gbe*_*rth 11

这个解决方案对我有用:

  1. 打开命令托盘(ctrl+shift+p在 Windows 上)
  2. 选择“撤消”命令

不知道为什么它有效。ctrl-zvscode在单元格外时是否禁用快捷方式?


小智 10

如果您按“Z”键,它将撤消移动和删除。请注意,不是 CTRL+Z,而是 'Z' 本身。 指向GitHub 问题的链接

  • 如果您意外单击“Z”并删除单元格,“CTRL”+“Y”(重做)会将其恢复 (10认同)
  • 天哪,仅用一键撤消单元格并且没有可用的恢复方法有什么意义。 (6认同)

Lud*_*wig 7

%history是一个救星,但我还要注意:当您运行时%history,并非所有代码都会显示,考虑到行数 - 您必须导航到输出文件,您将在其中看到所有历史记录,它会显示在那里。无论如何,打开输出文件的选项通常在 VS Code 的页面顶部给出。


chu*_*ung 6

好吧,这太疯狂了,但由于我在 Visual Studio Code 中,我尝试右键单击我的 .ipynb 文件并单击“转换为 Python 脚本”。

这恢复了我在删除单元格之前所拥有的每一行,包括 Markdown 代码。

如果您在 Visual Studio Code 中删除了 Jupyter Cells,可能值得一试