如何在VSCode中格式化Jupyter笔记本?

33

我们可以在浏览器的Jupyter notebook中格式化Python代码。但是当我改用VSCode并使用Microsoft扩展后,我发现无法再格式化Jupyter notebook了。有人知道如何解决吗?


“格式化代码”是什么意思还不清楚。您可以像平常一样编辑代码:按Enter键换行,按Tab键缩进。有什么需要补充的吗? - A. Donda
8个回答

37

正如Kyle Carow在回答Ian Huff时所说:现在可以进行笔记本的格式化。

  • MacOS: Option+Shift+F
  • Windows: Alt+Shift+F

按下这些键将触发活动单元格或整个笔记本的格式化(如果没有激活单元格)。


8
Black 格式化每个代码单元格后都会在末尾添加一个空行。 - jeffhale
应该是与格式化文档相同的键组合,一直尝试着,最后不得不查找... - Computer's Guy

17

Windows: Shift+Alt+F

这是我在安装了 VS Code 版本为 1.64.2 的 Black 格式化程序后使用的方法。

或者右键单击“格式化笔记本”以格式化整个笔记本。

格式化笔记本


虽然 Shift + Alt + F 可以工作,但我找不到任何类似于“格式化笔记本”的东西...我需要一个不同的 Jupyter 扩展程序,还是这不在最新的 vscode 中? - jimh

9

我认为VS Code不支持对代码单元格进行格式化,但是如果您使用black代码格式化程序,则可以使用%%black命令在单元格中对代码进行格式化。

您需要安装pip blackblackcellmagic,详情参见:https://github.com/csurfer/blackcellmagic


6
如果您在VS Code中打开了带有Jupyter笔记本扩展程序的笔记本,则应该可以使用 Ctrl+Shift+I 格式化代码单元格。
我不确定此快捷方式在不同操作系统上是否有所不同。您可以通过按下 Ctrl+Shift+P,然后搜索“格式化单元格”来检查自己的快捷方式。然后应该会显示该快捷方式。

这是在基于Ubuntu的Linux发行版中对我有效的方法。 - user115625

5

我不太确定这里正在问什么。但是目前在VS Code笔记本编辑器和交互窗口中不支持格式化Python代码。

然而,我们正在转移到一个新的UI界面,该界面将支持.py文件中所有VS Code的格式化功能。如果您现在尝试使用VS Code - Insiders,您应该会看到此支持并可以尝试它。这个新的UI最终将推出至VS Code stable。

编辑:新的支持单元格格式化的用户界面现已默认发布给稳定版本的用户。


从我的角度来看,他正在寻求代码美化器/自动格式化工具。这应该在vscode中适用于.py文件,对吧?但是不适用于vscode中的.ipynb笔记本。 - Andi Anderle
3
是的,我理解这个问题。目前ipynb已经有格式支持,但它只能在VS Code - Insiders版本中使用。该功能将会在未来几个月内推出到稳定版本的VS Code中。 - Ian Huff
@IanHuff,你有一个我们可以关注这个状态的页面链接吗? 对于JupyterLab,有一个很棒的扩展叫做jupyterlab-code-formatter,使得这个过程非常简单。 - louis_guitton
2
新的用户界面现在应该已经发布给稳定版用户了。 - Ian Huff
1
FYI:现在你可以通过使用键盘快捷键Ctrl+Shift+I在笔记本单元格中运行代码自动格式化器。不过,Black似乎会在单元格底部添加一行额外的内容,这很烦人。 - Kyle Carow

5

您可以设置VS Code在每次保存文件时自动格式化Jupyter Notebook文件。操作步骤如下:

  1. 进入设置... > 设置(Mac上为cmd + +)
  2. 搜索“format notebook”
  3. 勾选“保存时格式化笔记本电脑...”的复选框

0
在检查了VSCode扩展商店中的autppep8文档后,我发现我需要在"my setting.json"中删除"python.formatting.provider": "none"。然后我就可以通过右键点击的选项来格式化单元格和py文件了。

0
在Vscode设置(UI)(ctr+shift+p)中, 在设置了Black格式化程序和Jupyter笔记本格式化之后, VScode将在保存笔记本时自动格式化Jupyter笔记本。

Black formatter

Jupyter notebook formatting

auto format Jupyter notebook when saving the notebook.

Vscode版本:1.81.1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接