【问题标题】:Eclipse Formatter isn't indenting correctlyEclipse 格式化程序没有正确缩进
【发布时间】:2020-01-18 07:44:25
【问题描述】:

我们正在为我们的Eclipse 项目使用Java Conventions [built-in] 格式化程序。在Eclipse 中查看代码后,代码在格式化和缩进后看起来与预期一样。

我们注意到,如果我们在Notepad++(或其他应用程序)中打开文件,缩进实际上是不正确的。例如。方法体与方法具有相同的缩进。 此外,如果代码是从Eclipse 复制的,则缩进不正确。

示例 1

Eclipse

class Example {

    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}

Notepad++

class Example {

public static void main(String args[]) {
    System.out.println("Hello World!");
}
}

示例 2

Eclipse

public static void main(String args[]) {
    System.out.println("Hello World!");
}

Notepad++

public static void main(String args[]) {
System.out.println("Hello World!");
}

这是预期的行为吗?

空格/制表符的屏幕截图

所有字符

【问题讨论】:

  • 我的猜测:在 Eclipse 中,您使用的是 tabs i.o。缩进的空格(不是真正的约定)。而在 Notepad++ 中,选项卡设置设置为 0 个空格,对于 java 应该是 4。 (记事本++:查看|显示符号|显示空白和制表符。)
  • @deHaar Re “此问题与编程问题没有直接关系”,问题有效且切题,还有数千个关于格式问题的 SO 问题在 IDE 中! What topics can I ask about here? 明确解决了这一点:“如果您的问题通常涵盖……软件开发独有的实际、可回答的问题……那么您来对地方提出问题了!”。问题不应仅仅因为它们不“与编程问题直接相关”而被否决。赞成。
  • @deHaar eclipse-formatter 标签的存在(用于这个问题)也表明这个问题是 SO 的主题。
  • @deHaar 不用担心。看到一个有效的、很好的和有用的问题被否决真是令人沮丧,我认为这是由于对 SO 上有效问题的构成存在误解。
  • @skomisa 我没有投反对票,但也许我的评论让人们这样做了,这不是我的意图......

标签: eclipse eclipse-formatter


【解决方案1】:

默认的 Eclipse 格式化程序配置文件,Eclipse [Built-in],显示 选项卡宽度为 4 个空格强>。

相比之下,Java Conventions [Built-in] 显示 选项卡宽度为 8 个空格.

这是由Code Conventions for the Java Programming Language4 - Indentation 给出的如下(由我突出显示):

四个空格应该作为缩进的单位。最正确 缩进的构造(空格与制表符)未指定。 标签 必须每 8 个空格(不是 4 个)准确设置一次。

如今,很少使用带有混合制表策略和制表宽度为 8 个空格的原始 Java 代码约定。您可以考虑切换到 Eclipse [Built-in] 格式化程序配置文件。

【讨论】:

    【解决方案2】:

    Java Conventions [Built-in] 配置文件使用 8 个空格作为制表符。

    Notepad 使用 8 个空格,但 Notepad++(以及我使用过的大多数其他 IDE,例如 IntelliJ)使用 4 个空格。

    要修复此问题,请复制配置文件并将制表符间距更改为 4

    或者,Tab Policy 可以更改为 Spaces Only。我更喜欢这个,因为我不觉得制表符应该用于间距。这个问题是为什么不应该使用制表符的一个例子。

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多