Visual Studio Code Java 格式化文档括号换行

9
我该如何让Visual Studio Code按照新的格式排版Java文档中的花括号?

i.e:

这个。
public static void main(String args[]) {
}

To this

public static void main(String args[])
{
}

编辑:哎呀!!只需记住.vscode/extensions文件夹。我进入那里,然后/ryannaddy.vscode-format-0.0.6/package.json并将format.newLine更改为true。 感谢您的帮助。太开心了!!

4个回答

12

使用"Red Hat的Java(TM)语言支持"解决这个问题,您可以使用Eclipse格式化程序文件。这允许您为每种情况非常具体地指定大括号位置。例如,formatting.xml展示了所有"下一行"设置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="12">
    <profile kind="CodeFormatterProfile" name="style" version="12">
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
    </profile>
</profiles>

有效的值为next_linenext_line_shiftednext_line_on_wrapend_of_line

然后在您的Visual Studio Code的settings.json中:

{
    "java.format.settings.url": "/formatting.xml",
    "java.format.settings.profile": "style"
}

请查看此文档以获取一些用法细节。


2

Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.

ext install vscode-format

Visual Studio Code Format will allow you to format most of your code documents. The formatting is triggered by running your format command: editor.action.format

Place your braces on the same line or the next line:

{
    "newLine": {
        "brace": true
    }
}

链接:https://marketplace.visualstudio.com/items?itemName=ryannaddy.vscode-format


我之前已经安装过了,但是在我的设置中找不到editor.action.format。更糟糕的是它会将我的C#代码格式化为大括号在同一行。 >.> - lock42
我认为这是由于不同的代码风格造成的。在C#中,开发人员在花括号之前添加新行,但Java开发人员不使用花括号之前的换行符。这是Java的代码约定。 - Mykola Yashchenko
settings.json 文件中的配置设置。 - Mykola Yashchenko
这是我的唯一希望,不幸的是它已经从市场下架了。 - Junglemath

1

如果你想在 VS Code 中使用它,只需在 settings.json 文件中添加以下行:

{
  "java.format.settings.url": "https://gist.githubusercontent.com/fbricon/c5960a86f0a21405a61b79c0f1b4a0fc/raw/16b9b75077d08ae8b36706718a8393268d2ea5d2/formatter.xml"
}

感谢这个Gist


0

在我的情况下,我的格式化程序设置在.setting/org.eclipse.jdt.core.prefs中。

实际上,this文章是有效的,我通过创建一个新项目进行了测试。我不明白为什么在那个新项目上可以工作,而我的主要项目却不能。因此,我比较了应用于每个项目的任何项目设置,并发现了.setting/org.eclipse.jdt.core.prefs文件中的差异。

.setting/org.eclipse.jdt.core.prefs的位置

我的新项目只有该文件中的编译器设置,而我的主要项目具有编译器+格式化程序设置,这就是为什么JSON文件中的设置无法应用的原因。

我的解决方案是将该文件中的格式化程序设置值更改为与我导出的XML格式化程序相同的值(我从eclipse中导出了我的格式化程序XML)。谢谢。

这是我新项目的.setting/org.eclipse.jdt.core.prefs内容:

eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

这是我的主要项目中的内容:

...    
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns
...

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