无法在Eclipse中格式化后删除块注释

28

Eclipse的自动格式化器会更改块注释,导致“Source > Remove Block Comment”不能完全删除块注释。而“Source > Add Block Comment”会将其添加到代码行的开头和结尾,但在运行格式化器(Ctrl + Shift + F)后,它会换行并在每行开头添加一个星号。当我尝试使用“Source > Remove Block Comment”删除块注释时,块注释的开头和结尾会被删除,但每行开头的星号不会被删除。

如何防止Eclipse添加这些星号,或者在删除块注释的同时删除这些星号?

示例:

像这样的代码:

    String abc="abc";
    String def="def";
    System.out.println(abc+def);
    System.exit(0);
在添加块注释之后,它会变成这样:
/*  String abc="abc";
    String def="def";
    System.out.println(abc+def);
*/  System.exit(0);

应用格式后会变成这样:

    /*
     * String abc="abc"; String def="def"; System.out.println(abc+def);
     */System.exit(0);

使用“删除块注释”功能后,结果变成了这样:

    * String abc="abc"; String def="def"; System.out.println(abc+def);
    System.exit(0);
5个回答

27

也许已经有点晚了,但我通过禁用块注释格式来解决了这个问题。

Windows -> Preferences -> Java -> Code Style -> Formatter -> Edit -> Comments

然后取消勾选启用块注释格式


1
同样适用于行注释。 - Gerard
2
遗憾的是,这不是一个好的解决方案。首先,我喜欢它格式化块注释而不是这些 *,特别是当我与其他人一起工作时,他们的最大行宽与我的不同。我只需进行格式化,它就会调整到我的行宽。另外,这并不能阻止Eclipse在块注释中添加新行(按 Enter)时插入 * - Variadicism

16
另一种可行的解决方案是在Eclipse中使用"块选择模式",这种方法速度相当快,同时保持其他注释的格式。您只需按几个键即可删除注释。
在Windows中,您可以使用ALT + SHIFT + A切换"块选择模式"。查看屏幕截图以了解更多信息。
按照以下步骤操作:
- 按ALT + SHIFT + A切换"块选择模式" - 选择注释的垂直部分 - 按DeleteBackspace - 再次按ALT + SHIFT + A以禁用"块选择模式" - 保存文件,您就成功取消了代码的注释! 进入图片描述

1
太棒了!谢谢 :) - RanSch
1
非常好。如果我们无法取消选中“启用块注释格式”,这是另一种选择。感谢@CoderCroc。 - Lova Chittumuri

7

我之前也遇到过这个问题,我的解决方案是使用Eclipse生成的行注释(//)而不是块注释。选择代码,然后按Ctrl- /或Ctrl-7切换所选行的//。格式化后,这些行将被缩进并格式化为文本,但如果您删除注释(Ctrl-/或Ctrl-7)并重新格式化,一切都会正常工作。


我想那可能是唯一的方法。不过让我感到惊讶的是,Eclipse居然不能够区分它们之间的差异。如果没有其他更好的解决方案,我会将你的答案标记为正确答案。 - AniDev
我也不太喜欢这个解决方案,因为当你与其他使用不同行宽格式的人一起工作时,会出现很多问题。如果你写了一堆行注释,然后有人用较短的行宽格式化它们,那么就会产生一堆短行,无法格式化成一个漂亮的块。当他们的行宽是你的2/3时,情况会更糟,你会得到交替的中等和短长度行。使用块注释,可以立即进行格式化并调整到你的行宽,所以我不想停止使用块注释。 - Variadicism

0

我不知道这是否有助于解决你的问题,但在我的情况下,我发现这非常有帮助。请考虑以下文本 -

String abc="abc";
String def="def";
System.out.println(abc+def);
System.exit(0);

使用CTRL + SHIFT + F应用块注释后。

/*  String abc="abc";
String def="def";
System.out.println(abc+def);
*/System.exit(0);

只需在/*后添加-以将此块排除在格式化之外 -

/*-  String abc="abc";
String def="def";
System.out.println(abc+def);
*/System.exit(0);

现在再次检查!!!


0

使用 Ctrl + \(反斜杠)删除 /* --- --- --- */


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