【问题标题】:How do you determine which formatter is being used for VS Code?您如何确定 VS Code 使用了哪种格式化程序?
【发布时间】:2018-09-13 09:26:40
【问题描述】:

如果您安装了多个扩展程序,您如何确定在您的文档上运行的格式化程序?

例如,我有几个可以格式化 HTML 的 HTML 扩展,但我不确定哪个是实际格式化的,或者是否有多个。我什至不确定哪些扩展可能真的有助于格式化。最近,HTML 和 CSS 中的自动格式化以我不关心的方式改变了它们的格式化方式,我想知道哪个扩展正在这样做,所以我可以更改配置或禁用扩展。目前我有类似 80-90 的扩展,所以一个一个地进行是一个非常及时的过程,如果有一种程序化的方式来确定这一点,我想远离它。似乎扩展必须向格式化服务注册,以便它们可以进行自动格式化,但我不确定是否有办法调试、挂钩或查看这些。

【问题讨论】:

标签: visual-studio-code vscode-settings


【解决方案1】:

rofrolanswer 中提到的默认级别的格式化程序将很快得到更好的管理,来自issue 126187

为了世界各地的开发者的理智,它应该被弃用和放逐。

几天前,我冒险离开了 JS/TS/CSS/HTML/JSON 的道路,并想尝试 VScode 的新东西,ReScript。

我安装了插件https://marketplace.visualstudio.com/items?itemName=chenglou92.rescript-vscode

但格式无效。
用python格式化插件试过同样的问题。

经过一番调查,我发现我在settings.json 的顶层配置了这个。它还有一个不错的 GUI 下拉菜单。

"editor.defaultFormatter": "esbenp.prettier-vscode",

这显然覆盖了 ReScript 和 python 插件。
它可能已经覆盖了所有插件,即使是更漂亮的语言甚至没有注册使用,这是一件非常可怕的事情。

经过一番谷歌搜索后,我发现我可以添加这个并解决我的问题

"[rescript]": {
"editor.defaultFormatter": "chenglou92.rescript-vscode"
}

或者我可以将defaultFormatter 设置回null 并让插件接管。

但我想知道有多少用户遇到过同样的问题?有多少插件必须处理这个问题?为什么我认为向顶层添加 defaultFormatter 是个好主意?

嗯,在 VSCode 1.61(2021 年 9 月)中,现在将显示一个模式对话框。
Configure”操作将使您为该特定语言配置默认格式化程序,而不是为所有语言。
commit afc8ab1

【讨论】:

    【解决方案2】:

    除了Gama11给出的答案 您可以在以下给定路径上到达settings.json

    C:\Users\<username>\AppData\Roaming\Code\User\settings.json
    

    我正在为我的 html 文件使用"prettier" 格式化程序, 如果已配置,您还可以找到用于其他扩展的格式化程序。

    【讨论】:

      【解决方案3】:

      https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode

      ctrl-shift-p &gt; search "open json"

      添加

      {
          "editor.defaultFormatter": null,
          "[javascriptreact]": {
              "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
      }
      

      【讨论】:

        【解决方案4】:

        Starting with the 1.33 release (March 2019),尝试格式化已注册多个格式化程序的文件会导致如下弹出窗口:

        请注意,如果通过“保存时格式化”或“粘贴时格式化”隐式发生格式化,则通知是“静音”的,这意味着您需要单击右下角的铃铛才能显示:

        Configure... 菜单随后会列出当前语言可用的所有格式化程序。可以选择其中之一作为Format DocumentFormat Selection 的默认格式化程序:

        在此处选择“Prettier”会导致将其添加到全局 settings.json

        "[html]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        }
        

        还有两个新命令用于使用特定格式化程序格式化文件,Format Document With...Format Selection With...。这对于使用未设置为默认格式化程序的格式化程序格式化特定文件很有用。前者也可以从上下文菜单中获得:

        【讨论】:

        • 是否可以一步定义多种语言。喜欢:[javascript, json]: {}
        • 上面没有提到的Format Document With... 命令的有用特性是:1) 它显示了一个可用格式化程序的菜单,其中(default) 旁边是当前打开的文件类型的默认值 2)它包括项目Configure Default Formatter... 以更改该默认值
        • 保存时,我的 VSCode 突然在文件末尾添加了一个空行。我已禁用添加新行的所有选项。我什至卸载了Prettier 扩展。但是当我按下ctrl+s 时,它仍然会在文件末尾添加一个新的空白行。这是为什么呢?
        • 最近,如果 VSCode 检测到多个格式化程序,它会询问您要使用哪个好。听起来这里现在有更多即将发生的变化:github.com/microsoft/vscode/issues/126187 根据@VonC 的回答。
        猜你喜欢
        • 1970-01-01
        • 2020-11-09
        • 2020-12-25
        • 2020-06-25
        • 2022-11-20
        • 1970-01-01
        • 2018-11-16
        • 1970-01-01
        • 2022-11-10
        相关资源
        最近更新 更多