Mar*_*oma 2 sublimetext3 python-black
black每当我在 Sublime Text 3 中保存 Python 文件时,我都想申请。我该怎么做?
(如果有快速禁用它的方法可以加分)
小智 8
上面的答案真的很好。如果您不想编写自己的包或插件,并且您不喜欢Formatter包,那么还有sublack包,我认为它支持快速启用/禁用在保存时运行黑色。
您可以通过包控制(Ctrl-Shift-P(Mac:Cmd-Shift-P)包控制:安装包)以通常的方式安装 sublack。之后,您可以手动格式化当前文件:
在当前文件上运行黑色:按 Ctrl-Alt-B 以格式化整个文件。您也可以 Ctrl-Shift-P(Mac:Cmd-Shift-P)并选择 Sublack:格式化文件。
或者你可以:
保存当前视图时切换黑色:按 Ctrl-Shift-P(Mac:Cmd-Shift-P)并选择 Sublack:保存当前视图时切换黑色。
或者,您还可以通过创建类似于以下内容的用户设置(首选项 -> 包设置 -> sublack -> 设置)来启用永久保存时运行黑色:
{
"black_on_save": true,
"black_line_length": 80,
}
Run Code Online (Sandbox Code Playgroud)
on_post_save要执行类似的操作,您需要一个包或插件,只要在 Sublime 中为 Python 文件触发事件,就能够触发外部命令。
Formatter包是执行此类操作的包的一个示例,它的自述文件提到它也支持黑色。我自己不使用该软件包,因此我无法以某种方式推荐它。可能还有其他软件包也提供类似的功能,尽管这是我发现的唯一一个明确提到它支持黑色的软件包。
理论上,任何格式化包或在保存事件上执行命令的包(允许您指定要执行的命令)都可能配置为工作。
为了完整起见,可以通过创建ViewEventListener仅在 Python 文件内部触发并使用内部exec命令来执行black命令的插件来相当快速地创建执行此类操作的插件。
此类插件的一个示例如下(如果您不确定如何在 Sublime 中设置插件,该视频提供了如何在 Sublime 中设置插件的说明),元点已在保存时自行格式化:
import sublime
import sublime_plugin
import os
class FormatWithBlackOnSave(sublime_plugin.ViewEventListener):
"""
Listen for file saves and run the black code formatter on Python files
as they are saved, unless they have a setting indicating that the autoformat
should be disabled.
"""
@classmethod
def is_applicable(self, settings):
return "/Python/" in settings.get("syntax") and not settings.get(
"black_disabled", False
)
def on_post_save(self):
path, file = os.path.split(self.view.file_name())
settings = sublime.load_settings("Preferences.sublime-settings")
show_panel_on_build = (settings.get("show_panel_on_build", True),)
override_panel = settings.get("black_override_panel", False)
env = settings.get("black_env", {})
args = settings.get("black_arguments", [])
if override_panel:
settings.set("show_panel_on_build", not show_panel_on_build)
window = self.view.window() or sublime.active_window()
window.run_command(
"exec",
{
"shell_cmd": 'black {args} "{file}"'.format(
file=file, args=" ".join(args)
),
"working_dir": path,
"env": env,
},
)
if override_panel:
settings.set("show_panel_on_build", show_panel_on_build)
Run Code Online (Sandbox Code Playgroud)
一旦在包中就位User,您还应该向Preferences.sublime-settings文件中添加一些自定义设置来控制它:
// When this is True, the plugin will not execute on save.
"black_disabled": false,
// Override the value of the `show_panel_on_build` setting that controls
// whether the output panel appears when the command is executed. When
// true the value of that setting is temporarily inverted.
"black_override_panel": false,
// The arguments (other than the current file) to pass to black
"black_arguments": [],
// Optional environment variables to use while running the tool
// (for example to set the path); works as in a `sublime-build` file.
"black_env": {
}
Run Code Online (Sandbox Code Playgroud)
这需要您自己安装black命令(例如pip install black),并使用当前文件的给定参数执行它,只要该文件是 Python 文件并且设置black_disabled设置false为上述。
该插件使用内部exec命令,该命令使用首选项show_panel_on_build来确定是否应显示显示命令输出的面板。该设置的默认值为true,这意味着每次保存 Python 文件时,面板都会打开并显示如下消息:
reformatted black.py
All done!
1 file reformatted.
[Finished in 0.2s]
Run Code Online (Sandbox Code Playgroud)
该设置使插件在执行命令时black_override_panel反转 的值;show_panel_on_build要么在正常情况下不显示,要么反之亦然。
更改首选项中的设置将全局禁用事件侦听器在所有 Python 文件中触发。您还可以在包中创建一个文件User,其名称类似于Black.sublime-commands以下内容:
[
{
"caption": "Black: Toggle Format-on-save for this view",
"command": "toggle_setting",
"args": {
"setting": "black_disabled"
}
}
]
Run Code Online (Sandbox Code Playgroud)
这将向命令选项板添加一个命令,该命令会反转当前文件中的设置状态;这将允许您仅对某些文件禁用该插件或仅对某些文件启用该插件。
| 归档时间: |
|
| 查看次数: |
3107 次 |
| 最近记录: |