Sublimetext3 如何在保存时应用黑色代码格式?

Sublimetext3 如何在保存时应用黑色代码格式?,sublimetext3,python-black,Sublimetext3,Python Black,每当我在Sublime Text 3中保存Python文件时,我都想应用它。我该怎么做 (如果有一种快速禁用它的方法,则可获得额外的积分)要执行类似操作,您需要一个能够在Sublime中为Python文件触发on_post_save事件时触发外部命令的包或插件 这个包就是一个做这类事情的包的例子,自述文件提到它也支持黑色。我自己不使用这个软件包,所以我不能以这种或那种方式推荐它。可能还有其他软件包也提供类似的功能,尽管这是我发现的唯一一个明确提到它支持Black的软件包 理论上,任何格式化包或用

每当我在Sublime Text 3中保存Python文件时,我都想应用它。我该怎么做


(如果有一种快速禁用它的方法,则可获得额外的积分)

要执行类似操作,您需要一个能够在Sublime中为Python文件触发
on_post_save
事件时触发外部命令的包或插件

这个包就是一个做这类事情的包的例子,自述文件提到它也支持黑色。我自己不使用这个软件包,所以我不能以这种或那种方式推荐它。可能还有其他软件包也提供类似的功能,尽管这是我发现的唯一一个明确提到它支持Black的软件包

理论上,任何格式化包或用于在保存事件上执行命令的包(允许您指定要执行的命令)可能也可以配置为工作

为了完整起见,通过创建一个只在Python文件内部触发的
ViewEventListener
,并使用内部
exec
命令执行
black
命令,可以相当快地创建一个这样做的插件

此类插件的一个示例如下(如果您不确定如何在Sublime中设置插件,则提供有关如何在Sublime中设置插件的说明),该插件在保存时已对元点进行了格式化:

导入升华
导入升华插件
导入操作系统
类FormatWithBlackOnSave(升华插件.ViewEventListener):
"""
侦听文件保存并在Python文件上运行黑色代码格式化程序
保存时,除非它们具有指示自动格式化的设置
应该禁用。
"""
@类方法
def适用(自身、设置):
在settings.get(“语法”)中返回“/Python/”,而不是settings.get(
“黑色_禁用”,错误
)
保存后的def(自我):
path,file=os.path.split(self.view.file\u name())
设置=升华。加载设置(“首选项。升华设置”)
show_panel_on_build=(settings.get(“show_panel_on_build”,True)))
覆盖面板=设置.get(“黑色覆盖面板”,False)
env=settings.get(“black_env”,{})
args=settings.get(“黑色参数”,[])
如果覆盖面板:
设置(“在生成时显示面板”,而不是在生成时显示面板)
window=self.view.window()或sublime.active\u window()
window.run\u命令(
“执行官”,
{
“shell_cmd”:“black{args}”{file}”。格式(
file=file,args=“”.join(args)
),
“工作方向”:路径,
“环境”:环境,
},
)
如果覆盖面板:
设置(“在构建时显示面板”,在构建时显示面板)
用户
软件包中设置好后,您还应该向
首选项添加一些自定义设置。升华设置
文件以控制它:

    // 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": {
    }   
这要求您自己安装
black
命令(例如
pip install black
),并将使用当前文件的给定参数执行该命令,只要该文件是Python文件且
black\u disabled
设置如上所述设置为
false

该插件使用内部
exec
命令,该命令使用首选项
show_panel_on_build
来确定显示命令输出的面板是否应该出现。该设置的默认值为
true
,这意味着每次保存Python文件时,面板都会打开一条消息,如:

reformatted black.py
All done!
1 file reformatted.
[Finished in 0.2s]
black\u override\u panel
设置使插件在执行命令时反转
show\u panel\u on\u build
的值;要么在正常情况下不显示,要么反之亦然

更改首选项中的设置将全局禁用所有Python文件中的事件侦听器触发。您还可以在
用户
软件包中创建一个名为
Black.sublime commands
的文件,其内容如下:

[
    { 
        "caption": "Black: Toggle Format-on-save for this view",
        "command": "toggle_setting",
        "args": {
            "setting": "black_disabled"
        }
    }
]

将命令添加到命令选项板,以反转当前文件中设置的状态;这将允许您仅对某些文件禁用插件,或仅对某些文件启用插件。

上述答案非常好。如果您不想编写自己的包或插件,并且您不喜欢该包,那么还有该包,我认为它支持快速启用/禁用save上的running

您可以通过包控制(Ctrl-Shift-p(Mac:Cmd-Shift-p)包控制:安装包)以通常的方式安装子包。之后,您可以手动格式化当前文件:

在当前文件上运行黑色: 按Ctrl-Alt-B格式化整个文件。您还可以按住Ctrl-Shift-P键(Mac:Cmd-Shift-P)并选择Suback:Format file

或者你可以:

为当前视图保存时切换黑色: 按Ctrl-Shift-P(Mac:Cmd-Shift-P)并选择Sublack:Toggle black on save for current view

或者,您也可以通过创建类似以下内容的用户设置(首选项->包设置->子包->设置),启用永久保存时运行黑色:

{
    "black_on_save": true,
    "black_line_length": 80,
}
  • python 3.6
  • pip安装黑色
  • cmd+shift+p,然后单击
    软件包控制:安装软件包
  • 子批次
  • 在终端上,
    哪个python
  • 首选项/包设置/子包/设置 在右面板上

    {
        "black_on_save": true,
        "black_command": WHICH_PYTHON_RESULT
    }