如何恢复Jupyter笔记本中意外删除的单元格



我正在VSCode中的.ipynb文件中工作,我试图使用ESC+Z撤消一些行,但由于某种原因,要么撤消得太多,要么按下了其他按钮,但我的大约30个单元格都被删除了。我不知道怎么重做,我害怕我把所有的工作都丢了!

如何恢复这些细胞???

感谢

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

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

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

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

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

这种情况对我来说经常发生。太烦人了!当我命中或未命中CMD+Z时,就会发生这种情况。再多的ESC-Z也无法重新创建已删除的单元格。到目前为止,任何菜单中都没有任何东西能重现失落。我已经删除了"删除单元格"的所有快捷方式,但没有任何区别。仅仅因为这个原因就要放弃VSCode了。

这个解决方案对我有效:

  1. 打开命令托盘(窗口上的ctrl+shift+p)
  2. 选择";撤消";命令

不确定它为什么有效。vscode是否在单元格外禁用ctrl-z快捷方式?

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

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

重新定义键盘快捷键对我很有效。当我不在单元格内时,我删除了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" },

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

{ "key": "z", "command": "-undo", "when": "notebookEditorFocused && !inputFocus" },

好吧,这太疯狂了,但由于我在Visual Studio代码中,我尝试右键单击我的.ipynb文件,然后单击"转换为Python脚本"。

这恢复了每一行,包括我删除单元格之前的Markdown Code。

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

%history是一个救命稻草,但我也要注意:当你运行%history时,考虑到行数,并不是所有的代码都会显示出来——你必须导航到输出文件,在那里你可以看到所有的历史记录,它会显示在那里。打开输出文件的选项通常在VS代码的页面顶部给出。

ctrl + shift + z对我有用。

我在面临类似的情况后来到了这个线程,因为我也失去了一天的工作,但我不会放弃!因此,如果你已经在VS代码上设置了自动保存,并且启用了wsl2,并且正在使用wsl中的VS代码,那么你必须导航到这个路径

> \wsl.localhostUbuntuhome<user-name>.vscode-serverdataUserHistory.

或者简单地做

cd (to go to root path)
type explorer.exe . (this will open file explorer)
Navigate to .vscode-serverdataUserHistory.

将有多个文件夹,为您想要恢复的文件选择一个,然后Voila!

只需在窗口中单击Z即可。这为我省去了很多痛苦。有时也会发生这种情况

请注意,VSCode 1.78(2023年4月)在删除单元格之前将附带一个确认弹出窗口

这来自第173481期,其中评论道:

刚刚意外删除了一个运行了4个多小时的单元格,我想建议有一个确认弹出窗口,用于运行要删除的Jupyter单元格
理想情况下,应为所有单元格提供一个确认选项,但应为当前正在执行的单元格的默认选项。

您可以撤消删除单元格的操作,但这不会恢复正在进行的单元格,因此确认正在运行的单元格听起来是合理的。

因此,PR 179776,今天可在VSCode Insiders中获得。

This cell is running, are you sure you want to delete it?

我使用的是vscode,在这里我放了CTRL+M+Z

最新更新