如何在Wing Python IDE中使用Black、YAPF和Autopep8代码重新格式化

332 阅读2分钟

Wing支持用BlackYAPFautopep8自动重新格式化代码。使用自动重新格式化器可以让你开发出格式统一的漂亮的代码,而不需要花时间手动调整代码的布局。

有两种方法可以在Wing中用其中任何一种重新格式化代码。(1) 你可以在任何时候按要求重新格式化整个文件或当前的选择,或者(2) 你可以在编辑代码行或将编辑过的文件保存到磁盘时自动重新格式化。

安装改写器

Wing使用它自己的autopep8副本进行PEP 8风格的格式化。如果你打算使用 Black 或 YAPF 格式化,那么你必须首先将选定的格式化器安装到你的代码所使用的 Python 中。比如说:

pip install black
pip install yapf

或者如果你使用的是Anaconda:

conda install black
conda install yapf

完成这些后,在命令行上运行Python,参数为-m black或-myapf,应该会调用重新格式化器。

手动重新格式化

Source > Reformatting菜单包含了为PEP 8、Black或YAPF重新格式化当前文件或选择的项目。

/images/blog/reformatting/reformat-menu.png

上述操作的结果(用Black重新格式化选区)看起来像这样:

/images/blog/reformatting/reformat-menu-result.png

单一的撤消将撤消重新格式化的操作。

自动重新格式化

Wing也可以在光标离开行后自动格式化编辑过的行,或在保存到磁盘时自动格式化整个文件。这可以通过 "项目 属性"中的 "选项"标签下的 "自动格式化 "属性,或通过 "编辑器">"自动格式化 ">"自动格式化"偏好设置来启用。

/images/blog/reformatting/reformat-automatic.png

当这被设置为 编辑 后的行,Wing只对你编辑过的行进行重新格式化,当编辑器的光标离开该行或文件被保存之前。例如,使用yapf作为格式化器。

/images/blog/reformatting/reformat-auto-line.gif

请注意,重新格式化适用于整个逻辑行,在这个例子中,逻辑行可能跨越一个以上的物理行。

如果使用" 保存 前自动重新格式化",则整个 文件 在保存到磁盘前被重新格式化。例如,使用Black作为格式化器。

/images/blog/reformatting/reformat-auto-file.gif

请注意,Wing为重新格式化实现了一些超时,以便非常大的文件不会挂起保存或其他操作,并且有一些选项可用于控制格式化的细节。更多信息请参见自动重新格式化