如何在Eclipse中禁用保存时的自动格式化?

39

Eclipse保存时会自动进行格式化,例如:无论我如何拆分代码,一旦保存,它都坚持让以下代码在单行中。

@Transactional(rollbackFor = DataAccessException.class, readOnly = false, timeout = 30, propagation = Propagation.SUPPORTS, isolation = Isolation.DEFAULT)
5个回答

69

窗口 > 首选项 > Java > 编辑器 > 保存操作。

也可以在项目级别进行配置。项目 > 属性 > Java 编辑器 > 保存操作。


或者,您可以配置代码格式化程序,使其不为您重新组织换行符,但仍然执行其余的操作。 - Matthew Gilliard
3
似乎我可以在“保存操作”中禁用格式设置,但我没有看到代码格式化器中组织换行符的选项。 - Oliver
2
尽管我在那个页面上取消了所有选项(在Mac上使用Juno),但我仍然遇到同样的问题。还有其他原因吗? - SMBiggs
3
我已完全禁用“保存时执行选定操作”,但Eclipse仍会格式化我的代码。我有遗漏了什么吗? - Arashsoft
3
你是否已经在全局(窗口>首选项)和项目(项目>属性)中都禁用了它?如果是的话,恐怕我不知道。我已经三年多没有使用Eclipse了。 - dty
1
@Arashsoft 这可能是因为您已经全局禁用了代码格式化,但它存在于每个项目中。如果存在每个项目的保存操作,请禁用它们。为此,请转到Window->Preferences> Java-> Editor-> Save Actions->单击“配置项目特定设置”。在窗口底部选择复选框“仅显示具有项目特定设置的项目”。然后选择一个模块/项目->确定->取消选中“启用项目特定设置”->应用。完成! - Dinoop paloli

4

如果您希望保留自动格式化程序,但不想要这种行为,您也可以在格式化程序中进行配置:

right click on the project -> properties -> java code style -> formatter

(如果您没有项目特定的格式化程序,可以通过以下方式访问全局配置:Window -> Preference -> Java -> Code Style -> Formatter)。 编辑...活动配置文件,打开换行选项卡,然后勾选永远不要合并已经换行的行选项。
这样,您就可以在任何地方换行,而Eclipse不会删除您的换行符(如果您希望有可读的lambda表达式,这是必须的),但仍保持格式化程序处于活动状态。
这个选项至少自Eclipse Luna以来就存在了。
下面是一个截图,显示了这个选项的位置: enter image description here

4
这是一个晚回答,但为了让初学者更清楚地理解,我有一个设置的快照。 请按左侧路径操作。
并更改突出显示的设置。 enter image description here

1
我已经完全禁用了“保存时执行所选操作”,但是Eclipse仍然会格式化我的代码。我有什么遗漏吗? - Arashsoft
我也一样,我也想不出解决办法,似乎我必须放弃使用 Eclipse,因为太多的功能可能会成为问题。 - Onza
@Onza,你使用的是哪个版本的Eclipse? - VedantK
@TmP 我找出了问题所在,可能也是其他人遇到同样问题的原因,插件。在我的情况下,是 AnyEdit 工具导致排序问题,你需要在那里禁用它。 - Onza

4

这是一个非常令人懊恼的改进。对于if语句,请遵循以下步骤: 窗口 | 首选项 | Java | 代码风格 | 格式化程序 | 控制语句选项卡 选择保持简单的if在一行上。 你也可以尝试换行选项卡。


这就是我大部分问题所在的地方!该死的复杂(就像Eclipse中的所有东西一样),几乎彻底。 - SMBiggs

2

我想补充一条小技巧。如果你想避免文本自动换行,你可以把"最大行宽"的数值设置得非常大。只要这个数值足够高,Eclipse就不会去换行。

菜单路径:Preferences(偏好设置)> Java > Code Style(代码风格)> Formatter(格式化)> Edit(编辑)> Line Wrapping(换行)> Maximum line width(最大行宽)


在 Kepler 中,似乎不适用于保存操作。保存操作选项卡奇怪地覆盖了格式化程序的所有设置,并隐藏了此设置。在以前的版本中没有问题。 - djmj
尽管许多答案都很有帮助,但只有这个实际上回答了问题并且同时起作用。 - Poniros

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