IntelliJ IDEA中是否有类似Eclipse的注释格式化功能?

50

在Eclipse中,我可以通过选择注释并按下Shift + Ctrl + F来格式化注释。例如,当我选择一个方法注释时,如下所示:

/**
 * This method
 * does some stuff.
 */

然后按下Shift + Ctrl + F,Eclipse会自动进行包装:

/**
 * This method does some stuff.
 */

在IDEA中有没有类似的东西?

编辑:为了澄清,我正在寻找可以将过长的行分成多行的注释格式。

7个回答

40

你能够得到的最接近的功能是 编辑 | 合并多行(按下Ctrl+Shift+J)。在此之前,你需要先选择要合并的行。

如果想要自动换行长注释,请启用设置 | 代码样式 | Java文档注释 | 右边界处换行


19
如果您可以为Javadoc设置单独的边距(我将我的边距设置得很靠右,适用于长代码,但对于Javadoc块文本来说,较小的边距更好),并且如果它可以像Eclipse一样自动连接行,那将非常好。JetBrains,您能听到我们的声音吗? - Alexander Klimetschek
2
它看起来非常有 bug:当换行时,它总是“保留换行符”,而不管设置如何,因此无法获得块格式化文本而不进行手动格式化(在这里使用 IntelliJ 11.1.3)。 - Alexander Klimetschek
2
@AlexanderKlimetschek,如果您直接在http://youtrack.jetbrains.net/issues/IDEA提交错误,那么您就有更多的机会获得关注。 - CrazyCoder
1
报告:http://youtrack.jetbrains.com/issue/IDEA-90512 - 根据http://youtrack.jetbrains.com/issue/IDEA-69770#comment=27-277123,他们需要/希望重新编写版本12的javadoc格式。 - Alexander Klimetschek
2
阅读了这个答案后,我仍然无法格式化注释,无论是常规注释还是javadoc。在进一步阅读后,我发现它不仅适用于javadoc,而且适用于所有注释。还应启用以下选项:“设置>代码样式>换行和大括号>确保未超出右边缘”,正如Ted M. Young在下面的答案中提到的那样。从我的角度来看,启用此附加设置看起来像是解决IntelliJ IDEA中应该修复的错误的解决方法。 - Andrew Terekhine
显示剩余7条评论

10

对于Javadoc注释,您需要确保已勾选“在右边界处换行”设置。 在“其他”下面的代码风格>JavaDoc中查看。 但是,这个设置似乎只在重新格式化整个文件时才生效,因为仅重新格式化Javadoc(即选择Javadoc,然后执行Code(菜单)> 重新格式化代码...CtrlAltL)使其超出右边界不会强制换行。如果我重新格式化整个文件,则会按预期在边缘处换行。

这似乎是一个错误(尽管似乎没有被报告过),因为如果您必须勾选“确保不超出右边界”,则选择Javadoc文本并执行重新格式化代码确实会换行。此设置位于设置>代码样式>包装和大括号中。您也可以在设置对话框中搜索“ensure right margin”。

您仍然需要使用CtrlShiftJ手动拼接行。

这可能值得向JetBrains提出改进请求。


3
不要重新格式化整个文档,尝试在选中整个 Javadoc 后使用 Ctrl-Alt-L ,而不仅仅是想要换行的行。这对我有效(而只选择 Javadoc 内部的行则无效)。 - kghastie
2
我同意这似乎很奇怪,你需要“确保不超过右边界”。我的注释行在我检查之前都没有被分开。 - joshkendrick
很好的发现,@kghastie!诀窍是选择整个JavaDoc注释。 - Jerry101
你可以使用 Ctrl-W 来选择整个注释 - 只需按足够多次即可。 - user3458

8

enter image description here

当您执行“重新格式化代码”(Mac上的⌥⌘L)时,现有的注释将被重新格式化。


3

@kghastie揭示了关键点。

步骤:

  1. 设置代码样式 > Java > JavaDoc > 右边距处换行选项。
  2. 选择整个JavaDoc注释的完整行
  3. 重新格式化代码(Ctrl-Alt-L或⌥⌘L)。

另一种较少的替代方法:

  1. 设置代码样式 > Java > JavaDoc > 右边距处换行代码样式 > Java > 换行和大括号 > 确保不超过右边距选项。
  2. 在JavaDoc注释中选择一些文本。
  3. 连接行(Ctrl-Shift-J),然后重新格式化代码(Ctrl-Alt-L或⌥⌘L)。
    • 注意:即使您有段落分隔符(<p/>\n\n),这也会将所有选定的行连接在一起。

3

JetBrains插件Wrap to Column就是为此而制作的:

using the Wrap to Paragraph feature

从概述中:

将文本包装到指定的列宽。类似于Emacs命令“填充段落”和Vim的gq(格式化行)命令。这是本机Intellij“填充段落”命令的替代品,但它不能满足我的需求。

此插件提供两个IDE操作:

  • Wrap Line to Column:将所选文本或当前行(如果未选择文本)包装。这对于希望将命令与运动配对的IdeaVim用户很有用,例如vip(选择当前段落)。
  • Wrap Paragraph to Column:将光标所在的段落(多行)包装。不需要选择,将被忽略。

2

我在Mac上使用IntelliJ 14,它有一个填充段落的命令。通过强大的通用Command-Shift-A操作搜索功能访问它。非常好用!


它应该做什么? - Jon Tirsen
1
该命令确实存在。不幸的是,据我所知它没有任何作用。 - James Moore
“填充段落”功能可用。您必须将光标放在要格式化的段落内。我使用它来格式化注释。 - Gurpartap Singh

0

这是一个hack,不是真正的好解决方法,但如果你有一段需要像这样格式化的代码块,它急需自动格式化,因为它超过了80行最大限制,或者它非常难读...

你可以在你想要格式化的任何内容上面放置if ("foo" == "bar") {,然后在if语句的底部添加}来关闭它,你的代码应该自动缩进、自动格式化等... 然后将其删除,选择刚刚格式化的所有内容并按下SHIFT+TAB将其向后移动4个空格并删除虚拟的if语句


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