如何在VSCode中设置大括号换行显示?

80

假设我输入以下代码并对其进行格式化。

if (condition) { /* Hello! */ }

如果这是C#代码,它应该像这样格式化:

if (condition)
{
    // Hello!
}
如果是 JavaScript 代码,VSCode 会格式化它如下:
if (condition) {
    // Hello!
}

那么我如何在所有语言中使用第一种格式(花括号换行)?我找不到设置或类似的东西。有什么建议吗?


5
在JavaScript中,下一行的花括号会产生副作用,应该在同一行上。按照我个人的想法,代码格式设置应该保持不变。 - Tushar
4
@Tushar 真的吗? 我以为那只是格式问题。 你能引用一些文章或举一个简单的例子吗? - M. Fatih
3
这是因为在 JS 中分号不是必须的,所以如果你将花括号放在下一行,解释器会如何知道你是否忘记了分号或者在某些模糊的情况下是否仍然在同一个语句中呢?[来源] - Shanoor
2
@M.Fatih Javascript的自动分号插入可能会在您将{放在下一行时导致问题。著名的例子是return {a: 'b'};,这里的{return的下一行。当添加分号时,相同的语句被视为return;和下一行{..,这导致返回undefined,而您期望的是对象,请阅读更多信息:https://dev59.com/JnE85IYBdhLWcg3wSxkv和http://jamesallardice.com/understanding-automatic-semi-colon-insertion-in-javascript/ - Tushar
37
格式配置是个人偏好,有些人喜欢将左大括号放在新的一行,而另一些人则喜欢将它们放在同一行。告诉别人“在Javascript中将左大括号放在同一行会产生副作用”是不正确的。唯一一个必须将左大括号放在同一行的地方是在“return { ...”语句中。在所有其他情况下都没有问题。在编码标准中,您可以选择自己的样式,但务必保持一致性,如果您选择将左大括号放在新行上,请在整个项目中始终如一。 - Gil Epshtain
显示剩余7条评论
10个回答

91

按照以下步骤使得Visual Studio CodeJava ScriptType Script中将左花括号格式化到新的一行。

Visual Studio Code(v1.20.0)中:

  1. 进入 文件\首选项\设置
  2. 在'用户设置'(右侧面板)中添加以下行:

    "javascript.format.placeOpenBraceOnNewLineForControlBlocks": true, 
    "javascript.format.placeOpenBraceOnNewLineForFunctions": true,
    
    "typescript.format.placeOpenBraceOnNewLineForControlBlocks": true,
    "typescript.format.placeOpenBraceOnNewLineForFunctions": true,
    
  3. 保存"User Settings",完成!


最新版本的VS Code甚至不需要打字!现在的设计类似于浏览器中的about:config。 - Ashwin Prabhu
设置有帮助,但并不完美,似乎可以很好地获取给定块的第一个控制语句,但偶尔会错过else、else if、catch等。奇怪的情况。 - jrh
20
C# 或者 csharp 怎么翻译呢?以上的格式选项似乎都没有用处。请您指示。 - Daniel Jackson
我还想添加一个参考链接 https://robertwray.co.uk/blog/braces-on-new-lines-in-visual-studio-code,这对我很有帮助。也许能帮到其他人。 - Vikram Singh Saini
我添加了一个答案,解释了如何在C#中获得“JavaScript风格”。 - Spikolynn
显示剩余2条评论

37

前往 文件\首选项\设置 并搜索“括号”。

启用下面所示的设置。

这使我可以自动格式化函数定义和控制块的花括号代码到下一行。

文件\首选项\设置

已在 Visual Studio Code 1.30.2 中测试


11
“csharp”在哪里?这只是答案的一半。 - Daniel Jackson
1
搜索“curly”没有结果,“brace”有结果。 - edelwater

10

需要PHP解决方案的人,需要安装 PHP Intelephense 扩展并更新 settings.json 文件。

"intelephense.format.braces": "k&r" 

默认情况下是 psr12


6

默认情况下,VS Code不支持格式自定义。但是使用js-beautify扩展程序可以进行格式自定义。您可以在VS Code Marketplace(https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify)中找到免费版本。

如果您需要大括号放在新行,可以通过在项目根文件夹中创建'.jsbeautifyrc'配置文件并定义以下行来设置:

{
     "brace_style": "expand"
}

如果您需要更多的格式选项,您可以在下面的链接中找到:

https://github.com/HookyQR/VSCodeBeautify/blob/master/Settings.md

3

打开VSCode>选择文件>首选项>设置> <输入"brace" (不含引号)> 并取消勾选CSharpFixFormat>样式>大括号>在同一行 enter image description here


没有 CSharpFixFormat。你安装了哪些扩展? - not2qubit

2
settings.json 文件中添加以下行,通过输入 ctrl+, 打开它。
  // Brackets on a new line
  "javascript.format.placeOpenBraceOnNewLineForControlBlocks": true,
  "javascript.format.placeOpenBraceOnNewLineForFunctions": true,
  "typescript.format.placeOpenBraceOnNewLineForControlBlocks": true,
  "typescript.format.placeOpenBraceOnNewLineForFunctions": true,

或者在设置中搜索函数换行并勾选两个框,通过输入ctrl+shift+p打开它,并搜索打开设置(json)

enter image description here


2
C_Cpp: Clang_format_fallback 样式
谷歌

2
请提供更多细节以帮助解答? - not2qubit

1

2021年,默认行为似乎是OP所想要的。要在c#中(使用vscode 1.63和omnisharp)将花括号放在同一行上,您需要在项目根目录中创建一个omnisharp.json文件,并按https://nosuchstudio.medium.com/formatting-curly-braces-on-the-same-line-in-c-in-vscode-c4937e1c215f中描述的正确设置进行设置。例如:

{
"FormattingOptions": {
    "NewLinesForBracesInLambdaExpressionBody": false,
    "NewLinesForBracesInAnonymousMethods": false,
    "NewLinesForBracesInAnonymousTypes": false,
    "NewLinesForBracesInControlBlocks": false,
    "NewLinesForBracesInTypes": false,
    "NewLinesForBracesInMethods": false,
    "NewLinesForBracesInProperties": false,
    "NewLinesForBracesInObjectCollectionArrayInitializers": false,
    "NewLinesForBracesInAccessors": false,
    "NewLineForElse": false,
    "NewLineForCatch": false,
    "NewLineForFinally": false
}

}

我不明白你把这个文件放在哪里了? - not2qubit

1

仅供参考:如果是针对Java的话。文件\首选项\设置 扩展\Java\代码生成:使用块。Java Code Blocks


将所有内容的左花括号放在新行上,而不仅仅是在if语句后面,这个怎么样? - Junglemath

-8

以下指示适用于VS Pro 2012...

  1. 在菜单栏中选择工具。
  2. 选择选项...
  3. 展开文本编辑器列表。
  4. 展开JavaScript列表。
  5. 展开格式设置列表。
  6. 选择新行。
  7. 选择将控制块的开放括号放置在新行上。

希望这对您有所帮助。如果您有任何问题,请随时回复。


1
嗯...我在VSCode上标记了问题。并不是在询问Visual Studio Community/Professional/Ultimate等等。;) (在此处查看VSCode - M. Fatih
这不是对Visual Studio Code问题的答案;Visual Studio和Visual Studio Code是完全不同的。 - jrh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接