ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

格式

by mitranim 全部

Sublime Text通用格式化插件;通过调用任意可执行文件,如`gofmt`来格式化任意代码

详细信息

  • 0.1.14
  • github.com
  • github.com
  • 9个月前
  • 21分钟前
  • 4年前

安装

  • 总计 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

源代码
raw.githubusercontent.com

概述

通过调用任意可执行文件来自动格式化任意代码的Sublime Text插件。适用于gofmtrustfmt、任何类似可执行的工具,这些工具使用标准输入/输出。

功能

  • 按需格式化。可选在保存时自动格式化。
  • 作用域配置可执行文件和其他设置(语法类型:source.gosource.rust等)。
  • 格式化时可选保留光标和滚动位置,通过`"merge_type": "diff"`。
  • 在输出面板中显示错误(可配置)。
  • 可以格式化整个文件,也可以只格式化选择内容。
    • 选择格式化适用于嵌入式语法,例如HTML中的JS。

限制

  • 每次调用都会启动一个子进程。对于用编译语言编写的格式化工具,如`gofmt`和`rustfmt`足够好。如果某个格式化工具是用JS编写的并且启动时间较长,这个工具可能不适合。

基于https://github.com/mitranim/sublime-gofmt,并完全取代它。还取代了RustFmt和其他众多插件。

原因

为什么存在这个插件?

Package Control有针对不同语言的特殊格式化插件,以及功能过多的Formatter插件。这使得添加格式化插件变得困难:每次都需要有人创建并发布一个新的插件,或者分支一个仓库并提交PR,等等。

许多格式化工具只是调用子进程并使用标准输入/输出。一个插件可以处理所有这些,同时让用户能够为任何新的语法指定任何新的格式化工具!这适用于gofmtrustfmtclang-format以及无数其他工具。

安装

Package Control

  1. 获取Package Control
  2. 打开命令面板:⇪⌘P或⇪P。
  3. Package Control: 安装包.
  4. 格式.

手动

克隆仓库并将其符号链接到您的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

错误:不支持“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。支持多种打印错误的方式。默认情况下,错误显示在底部的临时输出面板中。

许可证

https://unlicense.org

difflib.py基于发布在Apache许可证下的代码,请参阅文件中的超链接。它经过了重大编辑,但其许可状态对我来说是未知的。其余均为原创,并且处于Unlicense状态。