ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Visual Studio Code (VSCode) 中格式化代码?

这个问题的答案是社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。

在 Visual Studio 中的 Windows 上用于格式化或在 Visual Studio 代码编辑器中“美化”代码的 Ctrl + K + F 和 Ctrl + K + D 是什么?

对于那些拼命尝试格式化 XML(目前似乎不可能开箱即用)的人,您可以通过安装扩展来实现这一点。我发现 XML Tools 可以很好地完成工作。 免责声明:我不是作者,也与这个项目无关......
虽然 VSCode 的菜单选项比 VS(新趋势?)少得多,但它在 HELP 菜单下有大量信息和教程,这可能已经回答了这个问题。
对于所有即使在 Visual Studio Code 中尝试了有效组合后仍难以获得格式化工作的人,不要忘记选择适当的编程语言类型,它位于该笑脸旁边的 Visual Studio Code 窗口的右下角。一旦你这样做了,我发现它开箱即用,你不需要任何额外的插件来格式化代码。

m
mehmet

代码格式可通过以下快捷方式在 Visual Studio Code 中使用:

在 Windows 上 Shift + Alt + F

在 Mac 上 Shift + Option + F

在 Linux 上 Ctrl + Shift + I

或者,您可以使用 Ctrl +Shift+ P(或 Mac 上的 Command + Shift + P)通过编辑器中提供的“命令面板”找到快捷方式以及其他快捷方式,然后搜索格式文档。

对于未保存的片段

打开命令面板(Win:F1 或 Ctrl+Shift+P) 找到“更改语言模式”选择语言,例如 json。现在应该突出显示语法。格式化文档(例如打开命令面板->“格式化文档”)

取消格式化

选择文本命令面板 -> 连接线

'显示图片'

https://i.stack.imgur.com/wPRmb.png


另请注意,代码语言必须正确。即,如果选择纯文本,则格式代码将不可用,但切换到 JSON(例如)将愉快地格式化所选文本。 (就像文本编辑器一样快乐)
@JoSmo:在 Ubuntu 上,我打开了文件 > 首选项 > 键盘快捷键。 { "key": "ctrl+shift+i", "command": "editor.action.format", "when": "editorTextFocus" } 有一个项目。命令“ctrl+shift+i”对我有用。
此外,显然该文件必须先保存到磁盘。我有一大块 HTML+Javascript 无法格式化 JS,所以我将它粘贴到一个临时窗口并设置语言,但这在保存之前也无济于事。
对于那些说它在 Mac 上不起作用的人来说,这看起来像是快捷方式和 OS X 文本输入系统之间的冲突,重音字符取决于您配置的区域设置和键盘设置:github.com/Microsoft/vscode/issues/8914#issuecomment-245947844
这对我在 VS Code 最新版本和 win 10 上不起作用,这是否假设安装了某个扩展?
P
Peter Mortensen

代码格式化快捷键:

Windows 上的 Visual Studio 代码 - Shift + Alt + F

MacOS 上的 Visual Studio 代码 - Shift + Option + F

Ubuntu 上的 Visual Studio 代码 - Ctrl + Shift + I

如果需要,您还可以使用首选项设置自定义此快捷方式。

保存文件时的代码格式:

Visual Studio Code 允许用户自定义默认设置。

如果您想在保存时自动格式化您的内容,请在 Visual Studio Code 的工作空间设置中添加以下代码片段。

菜单文件 → 首选项 → 工作区设置

{
    // Controls if the editor should automatically format the line after typing
    "beautify.onSave": true,

    "editor.formatOnSave": true,

    // You can auto format any files based on the file extensions type.
    "beautify.JSfiles": [
        "js",
        "json",
        "jsbeautifyrc",
        "jshintrc",
        "ts"
    ]
}

注意:现在您可以自动格式化 TypeScript 文件。检查我的更新。


不知道为什么它在 CentOS 中有所不同,但它是 Shift + Alt + I
安装了 eslint 扩展后,beautify.onSave 无效
@ClintEeastwood 尝试在您的 vs 代码设置中使用 prettier.singleQuote: true
找不到“工作场所设置”,只有“文件”>“首选项”>“设置”。
@shaijut 它位于 File --> Preference --> Settings,然后在搜索栏下方您会看到 User,然后在右侧显示 Workspace
P
Peter Mortensen

您可以在菜单文件 → 首选项 → 键盘快捷键中添加键绑定。

{ "key": "cmd+k cmd+d", "command": "editor.action.formatDocument" }

或 Visual Studio,如:

{ "key": "ctrl+k ctrl+d", "command": "editor.action.formatDocument" }

在 Windows 中,将 cmd 替换为 ctrl - 不要像我一样盲目地复制和粘贴!
“editor.action.format”又开始工作了。如果没有选择任何内容,它现在格式化整个文档,否则格式化选择。
J
Josh Correia

右键单击文件内容区域(文本)的某处 从菜单中选择格式化文档: Windows:Alt+Shift+F Linux:Alt+Shift+I macOS:⌥+⇧+F

https://i.stack.imgur.com/kTc8U.png


对于 Linux,键盘快捷键是 Ctlr + Shift + I
谢谢,当我的默认格式化程序链接到错误的格式化程序时,这很有帮助。您将看到一个额外的选项“使用...格式化文档”
P
Peter Mortensen

右键组合是 Shift + Alt + F。


当您只是将代码从剪贴板复制并粘贴到新选项卡时,什么也不会发生。解决方案:将代码保存到具有相关文件扩展名的文件中(例如 *.json)。然后它工作。我想原因是美化器知道扩展中的语言,并且没有根据代码进行自动检测。
此快捷方式适用于 MAC。在 Windows 中,它会格式化代码。
对于不同的操作系统,快捷键是不同的,对于 Linux,它的 Ctrl + Shift + I
P
Peter Mortensen

Visual Studio Code 1.6.1 支持“保存时格式化”,它将自动选择相关的已安装格式化程序扩展并在每次保存时格式化整个文档。

通过设置启用“保存时格式化”

"editor.formatOnSave": true

并且有可用的键盘快捷键(Visual Studio Code 1.7 及更高版本):

格式化整个文档:Shift + Alt + F

仅格式选择:Ctrl + K、Ctrl + F


我建议 VS Code marketplace.visualstudio.com/… 的 EsLint 扩展
P
Peter Mortensen

在 Linux 上是 Ctrl + Shift + I。

在 Windows 上是 Alt + Shift + F。使用 HTML/CSS/JavaScript 和 Visual Studio Code 1.18.0 测试。

对于其他语言,您可能需要安装特定的语言包。


C
Community

对于 Fedora

单击文件 -> 首选项 -> 键盘快捷键。在默认键盘快捷键下,搜索 (Ctrl + F) 以查找 editor.action.format。

我的阅读"key": "ctrl+shift+i"

你也可以改变它。请参阅 this answer,了解如何...或者如果您有点懒得向上滚动:

您可以在 "Preferences->Keyboard shortcuts" { "key": "cmd+k cmd+d", "command": "editor.action.format" } 或 Visual Studio 中添加键绑定,例如:{ "key":" ctrl+k ctrl+d", "command": "editor.action.format" }

请注意:cmd 键仅适用于 Mac。对于 Windows 和 Fedora(Windows 键盘),使用 Ctrl

编辑:

根据 Visual Code 版本 1.28.2,这是我发现的。

editor.action.format 不再存在。它现在已被 editor.action.formatDocumenteditor.action.formatSelection 取代。

在搜索框中键入 editor.action.format 以查看现有快捷方式。

要更改组合键,请执行以下步骤:

单击 editor.action.formatDocument 或 editor.action.formatSelection 左侧出现一个笔状图标 - 单击它。出现一个弹出窗口。按所需的组合键并按 Enter。


使用此命令,在我的 TypeScript 文件中,单引号变为双引号。如何解决?
似乎无法在新的设置垃圾 UI 中找到它。
@DioBrando,您可能需要检查您使用的 TypeScript 格式扩展。
P
Peter Mortensen

在 Ubuntu 上是 Ctrl + Shift + I。


我想这取决于语言。例如,CTRL + SHIFT + I 适用于 JavaScript,但不适用于 PHP。
r
rotgers

菜单文件→首选项→设置

"editor.formatOnType": true

当您输入分号时,它将被格式化。

或者,您也可以使用 "editor.formatOnSave": true


奇怪的是,我发现此设置的行为在某些情况下可能与 shift+alt+f 不同。虽然不知道为什么!
当我启用此功能并在 C# 中创建一个函数时,我可以完成整个事情并继续前进,但在执行“格式化文档”功能之前,该函数不会被格式化。我不知道为什么上面的设置在输入一个函数后没有格式化。
P
Peter Mortensen

只需右键单击文本并选择“格式代码”。

Visual Studio Code 在内部使用 js-beautify,但它无法修改您希望使用的样式。扩展“美化”允许您添加设置。


当然,我使用的是 Windows,它按描述工作 - 它可能取决于 VScode 版本(请更新!)和文件扩展名。请使用 HTML 进行测试。
P
Peter Mortensen

Shift + Alt + F 在 1.17.2 及更高版本中可以很好地完成这项工作。


P
Peter Mortensen

出于某种原因,Alt + Shift + F 在 Mac Visual Studio Code 1.3.1 上对我不起作用,实际上“格式化文档”命令根本不起作用。但是命令格式化程序工作得很好。

因此,您可以使用 Command + Shift + P 并键入 Formatter 或在菜单 File → Preferences → Keyboard Shortcuts → Command + K Command + S 中创建自己的快捷方式,然后键入 Formatter 并添加您的快捷方式。

看一个例子:

https://i.stack.imgur.com/qW5Ru.png


P
Peter Mortensen

在 Visual Studio 中格式化代码。

我尝试在 Windows 8 中格式化。

只需按照下面的屏幕截图。

单击顶部菜单栏上的查看,然后单击命令调色板。然后会出现一个文本框,我们需要输入格式 Shift + Alt + F


有时我将粘贴 xml 复制到一个新文件中,并希望在不保存文件的情况下对其进行格式化。这非常适合这种情况!
P
Peter Mortensen

在 Visual Studio Code 中,Shift+Alt+F 的作用与 Ctrl+K+D 在 Visual Studio 中的作用相同。


P
Peter Mortensen

我在 Visual Studio Code (Ubuntu) 中使用的最简单方法是:

用鼠标选择要格式化的文本。

右键单击并选择“格式选择”。


P
Peter Mortensen

在 Mac 上,Shift + Alt + F 适合我。

您可以随时检查菜单中的键绑定:

菜单文件→首选项→键盘快捷键并按关键字“格式”过滤。


在我的 M1 Mac 上,我没有看到 alt
P
Peter Mortensen

在我为 Mac OS X、DNVMDNX 安装 Mono 之前,C# 中的格式快捷方式对我不起作用。

在我安装 Mono 之前,自动格式化快捷键 (Shift + Alt + F) 仅适用于 .json 文件。


为了格式化 C# 需要安装扩展。通常omnisharp应该可以工作。但是,omnisharp 中存在一个错误。在修复错误之前,我们必须使用 Leopotam.csharpfixformat 扩展名。它覆盖了omnisharp。安装 C# FixFormat 扩展后,我可以再次格式化文档。
P
Peter Mortensen

虽然更改 Visual Studio Code 的默认行为需要扩展,但您可以覆盖工作区或用户级别的默认行为。它适用于大多数受支持的语言(我可以保证 HTML、JavaScript 和 C#)。

工作区级别

好处

不需要扩展

可以在团队之间共享

结果

.vscode/settings.json 在项目根文件夹中创建

如何?

转到:菜单文件 → 首选项 → 工作区设置添加并保存 "editor.formatOnType": true 到 settings.json (通过创建 .vscode/settings.json 文件覆盖您工作的项目的默认行为)。

用户环境级别

好处

不需要扩展

个人开发环境 tweeking 来统治他们(设置:))

结果

用户的 settings.json 被修改(参见下面的操作系统位置)

如何?

转到:菜单文件→首选项→用户设置在用户settings.json中添加或更改“editor.formatOnType”的值:false为“editor.formatOnType”:true

您的 Visual Studio Code 用户的 settings.json 位置是:

设置文件位置取决于您的平台,用户设置文件位于此处:

Windows:%APPDATA%\Code\User\settings.json

Mac:$HOME/Library/Application Support/Code/User/settings.json

Linux:$HOME/.config/Code/User/settings.json 工作区设置文件位于项目中的 .vscode 文件夹下。

here 可以找到更多详细信息。


但后果是什么?更改后它将如何实际工作?它会在输入内容时立即/自动更改格式吗?还在粘贴?
@PeterMortensen 只需尝试一下并评论答案
P
Peter Mortensen

选择文本,右键单击选择,然后选择选项“命令调色板”:

https://i.stack.imgur.com/sdXwt.png

将打开一个新窗口。搜索“格式”并根据要求选择具有格式的选项。


P
Peter Mortensen

默认情况下,此键不适用于 HTML、CSS 和 JavaScript 文档。

搜索后,我找到了具有 133,796 次安装的流行插件 JS-CSS-HTML Formatter

安装后,只需重新加载窗口并按 Ctrl + Shift + F,它就可以工作了!


是的,但只有 2 颗星(满分 5 星)?严重地?
提醒一下:这个答案最初是在 2017 年编写的,当时 VS Code 的功能通过插件或其他黑客几乎可以发挥作用,当时没有其他解决方案对我有用,所以我自己发现它当时确实有效,但没有关心它有多少颗星 :-) 现在是 2020 年,开箱即用的格式支持非常棒。
我认为 VS Code 还不支持开箱即用的 CSS 格式。我安装了 Prettier 插件 (prettier.io),它处理 JavaScript、TypeScript、Flow、JSX、JSON、CSS、SCSS、Less、HTML、Vue、Angular、GraphQL、Markdown、YAML。 560 万次安装和 4 颗星。
我很高兴您发现更漂亮:P 格式支持存在但不如更漂亮,我在所有带有 .prettierrc 和插件的项目中都使用更漂亮作为开发依赖项。恐怕有一天 prettier 会合并到 vs-code 中 :)
P
Peter Mortensen

只需安装 Microsoft 提供的 Visual Studio Keymap(Visual Studio 代码的 Visual Studio 键盘映射)。问题解决了。 :p


出色的 !谢谢
M
Mwiza

在 Mac 中,使用 ⌘+K,然后使用 ⌘+F。


作品!但在此之前,我使用右下角的状态栏将语言从 Plain Text 更改为 JSON
P
Peter Mortensen

您必须先安装适当的插件(即 XML、C# 等)。

在您安装相关插件并使用适当的扩展名保存文件之前,格式化将不可用。


Beautify 会询问您是否不知道使用哪种格式化程序,允许您设置 cshtml 样式。
由于这是解决许多在 Visual Studio Code 中寻找格式化 C#、PHP、CSS 和其他语言的问题的唯一答案,因此它值得更全面的内容。 (他们的问题是:“为什么这不起作用????这里的所有答案都声称它起作用!”)
我认为内容应该在这个答案中(作为对(锁定的)规范问题的答案),但 C# 的可能解决方案在 Visual Studio Code doesn't format C# code
G
Gama11

对于那些想要自定义要格式化的 JavaScript 文件的用户,您可以使用 JSfiles 属性上的 any 扩展名。这同样适用于 HTML。

{
    "beautify.onSave": true,
    "beautify.JSfiles": ["js", "json", "jsbeautifyrc", "jshintrc", "ts"],
    "beautify.HTMLfiles": ["htm", "html"]
}

这将为 TypeScript 启用保存时美化,您可以将 XML 添加到 HTML 选项。


我把这个放在哪里?它还有助于添加美化是一个扩展......
您可能已经提到了将此代码放在哪里。
@gromit190 你应该把它放在 settings.json 中。打开命令面板(Windows:Ctrl+Shift+P。Mac:Cmd+Shift+P),然后输入 'Open Settings (JSON)'
J
Jerry Ni

如果你想自定义格式文档的样式,你应该使用美化扩展。

参考这个截图:

https://www.evernote.com/l/Aaz3YH0uW7RGzI9lpfKbeihQqJ9Gazr7GDoB/image.png


P
Peter Mortensen

Linux 上的 Visual Studio 代码:

Ctrl + [ 取消缩进代码块和

Ctrl + ] 进行批量缩进


P
Peter Mortensen

不是这个。用这个:

菜单文件→首选项→工作区设置,“editor.formatOnType”:true


不是这个是什么?你指的是另一个答案吗?如果是,是哪一个?
P
Peter Mortensen

使用扩展...

保存文件时启用代码的自动格式化。

启动 Visual Studio Code 并快速打开 (Ctrl + P),粘贴以下命令,然后按 Enter。

ext install format-on-save

https://marketplace.visualstudio.com/items?itemName=gyuha.format-on-save


链接是死扩展 404?