格式
Sublime Text通用格式化插件;通过调用任意可执行文件,如`gofmt`来格式化任意代码
详细信息
安装
- 总计 635
- Win 170
- Mac 276
- Linux 189
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
README
概述
通过调用任意可执行文件来自动格式化任意代码的Sublime Text插件。适用于gofmt
、rustfmt
、任何类似可执行的工具,这些工具使用标准输入/输出。
功能
- 按需格式化。可选在保存时自动格式化。
- 按作用域配置可执行文件和其他设置(语法类型:
source.go
、source.rust
等)。 - 格式化时可选保留光标和滚动位置,通过`"merge_type": "diff"`。
- 在输出面板中显示错误(可配置)。
- 可以格式化整个文件,也可以只格式化选择内容。
- 选择格式化适用于嵌入式语法,例如HTML中的JS。
限制
- 每次调用都会启动一个子进程。对于用编译语言编写的格式化工具,如`gofmt`和`rustfmt`足够好。如果某个格式化工具是用JS编写的并且启动时间较长,这个工具可能不适合。
基于https://github.com/mitranim/sublime-gofmt,并完全取代它。还取代了RustFmt和其他众多插件。
原因
为什么存在这个插件?
Package Control有针对不同语言的特殊格式化插件,以及功能过多的Formatter插件。这使得添加格式化插件变得困难:每次都需要有人创建并发布一个新的插件,或者分支一个仓库并提交PR,等等。
许多格式化工具只是调用子进程并使用标准输入/输出。一个插件可以处理所有这些,同时让用户能够为任何新的语法指定任何新的格式化工具!这适用于gofmt
、rustfmt
、clang-format
以及无数其他工具。
安装
Package Control
- 获取Package Control。
- 打开命令面板:⇪⌘P或⇪P。
Package Control: 安装包
.格式
.
手动
克隆仓库并将其符号链接到您的Sublime Text包目录中。例如(针对MacOS):
git clone https://github.com/mitranim/sublime-fmt.git
cd sublime-fmt
ln -sf "$(pwd)" "$HOME/Library/Application Support/Sublime Text 3/Packages/Fmt"
要找到系统上的包目录,请使用Sublime Text菜单 → 预设 → 浏览包。
用法
该插件无默认格式化器。它调用系统中全局安装的命令行程序。您必须在插件设置中指定它们。例如(关于Go):
{
"rules": [
{
"selector": "source.go",
"cmd": ["goimports"],
"format_on_save": true,
"merge_type": "diff",
},
],
}
要了解Sublime的scope和选择器匹配,请阅读此简短官方文档:https://text.sublime.net.cn/docs/selectors.html。
如何获取scope名称。选项1:菜单 → 工具 → 开发者 → 显示Scope名称。选项2:运行命令Fmt: Format Buffer
,如果为当前scope未配置,它会告诉您!
要按需格式化,从命令面板运行Fmt: Format Buffer
命令。请参见下文如何配置快捷键。
要自动保存时格式化,请在设置中设置"format_on_save": true
。可以是全局的或按规则。
设置
请参阅Fmt.sublime-settings
了解所有可用设置。要覆盖它们,请打开
menu → Preferences → Package Settings → Fmt → Settings
插件按照以下顺序和优先级在以下位置查找设置:
- 通用Sublime Text设置中的
"Fmt"
字典,特定于项目或全局。 Fmt.sublime-settings
,用户创建的或默认的。
对于覆盖,请在项目或全局设置中打开并在其中添加"Fmt"
条目。
{
"Fmt": {
"rules": [
{
"selector": "source.some_lang",
"cmd": ["some_lang_fmt", "--some_arg"],
},
],
},
}
规则可以包含任何根级设置,例如format_on_save
。这使得可以进行细致的调整。
命令
在Sublime的命令面板中:
Fmt: Format Buffer
Fmt: Format Selection
快捷键
快捷键?更像是非快捷键!
为了避免潜在的冲突,此插件不提供快捷键。要为格式化命令添加快捷键,请将类似以下内容添加到您的.sublime-keymap
{"keys": ["primary+k", "primary+j"], "command": "fmt_format_buffer"},
{"keys": ["primary+k", "primary+k"], "command": "fmt_format_selection"},
Sublime在MacOS上自动将“primary”解析为“super”,在其他系统上解析为“ctrl”。
变更日志
2022-07-18。当子进程以0退出并且标准输出非空时,忽略stderr上的信息输出。
2022-07-11。默认使用"merge_type": "replace"
。由于大量差异的性能大幅下降,差异现在是可选的。
2020-12-28。支持环境变量替换。格式化保存默认不再启用。
2020-11-26。支持在cmd
中替换变量。
2020-11-25。使用scope选择器而不是精确匹配scope名称。
2020-10-25。支持子进程超时,总是杀死子进程。
2020-10-23。支持多种打印错误的方式。默认情况下,错误显示在底部的临时输出面板中。
许可证
difflib.py
基于发布在Apache许可证下的代码,请参阅文件中的超链接。它经过了重大编辑,但其许可状态对我来说是未知的。其余均为原创,并且处于Unlicense状态。