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