如何确定VS Code使用哪种格式化程序?

CTS*_*_AE 16 visual-studio-code vscode-extensions vscode-settings

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

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

Gam*_*a11 13

从1.33版本(2019年3月)开始,尝试格式化一个文件,该文件中已注册了多个格式化程序的文件将在弹出窗口中显示,如下所示:

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

然后,Configure...菜单列出了适用于当前语言的所有格式器。可以选择其中之一作为默认格式,Format DocumentFormat Selection

如果在此处选择“ Prettier”,则会将其添加到全局变量中settings.json

"[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
}
Run Code Online (Sandbox Code Playgroud)

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

  • 现在不行。https://github.com/microsoft/vscode/issues/51935 (2认同)
  • 上面未提及的“Format Document With...”命令的有用功能包括:1) 它显示可用格式化程序的菜单,当前打开的文件类型的默认值旁边有“(default)” 2) 它包括“配置默认格式化程序...”项以更改默认值 (2认同)

Sam*_*hav 11

除了Gama11给出的答案之外, 您还可以进入settings.json下面给定的路径

C:\Users\<username>\AppData\Roaming\Code\User\settings.json
Run Code Online (Sandbox Code Playgroud)

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

为 settings.json 中的 HTML 文件配置的格式化程序


Von*_*onC 6

rofrol答案中提到的默认级别格式化程序很快就会得到更好的管理,从问题 126187 开始

\n
\n

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

\n

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

\n

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

\n

但格式化\xe2\x80\x99不起作用。
\n尝试使用 python 格式化插件进行相同的操作,同样的问题。

\n

经过一番调查后,我发现我已将其配置在我的settings.json. 它还有一个不错的 GUI 下拉菜单。

\n
"editor.defaultFormatter": "esbenp.prettier-vscode",\n
Run Code Online (Sandbox Code Playgroud)\n

这显然覆盖了 ReScript 和 python 插件。
\n它可能会覆盖所有插件,即使对于 Prettier 甚至没有注册使用的语言也是如此,这是一件恶魔般的事情。

\n

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

\n
"[rescript]": {\n"editor.defaultFormatter": "chenglou92.rescript-vscode"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

或者我可以重新设置defaultFormatternull让插件接管。

\n

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

\n
\n

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

\n

https://user-images.githubusercontent.com/1794099/131115167-eede31ff-487b-45e2-a9f9-76b7fcf4e39c.png

\n