如何在Eclipse中自动删除行末空格?

432

这个问题有两个部分,其中一个我已经有了答案。

  1. 如何从整个正在编辑的文件中自动删除尾随空格?->答案:使用AnyEdit插件,可以设置在任何保存到文件中时执行此操作。
  2. 如何仅从我更改的行中自动删除尾随空格?-> 我不知道这个,希望得到任何帮助。

103
如果我能说服 Eclipse 不再添加我没有输入的尾随空格,那就太好了。 - divegeek
6
不需要插件,只需使用C++ -> 编辑器 -> 保存操作。另外,常规 -> 编辑器 -> 文本编辑器 -> 显示空白字符(单击可进行详细设置)非常方便。 - Trass3r
4
默认的保存操作不会剪裁 Java 文档注释中的尾随空白。此外,它的功能受限于仅适用于 Java 文件。我们有一个代码审查系统,会将所有尾随空格标记为错误。AnyEdit 对于处理所有文件类型的尾随空格非常有用。另外,查找您的公司对第三方软件的限制可能也是有用的。 AnyEdit 插件使用 EPL 许可证(http://opensource.org/licenses/eclipse-1.0.php)[来自此处:http://andrei.gmxhome.de/anyedit/index.html] - Ashutosh Jindal
1
我一直想不通为什么突然间行末的空格都被删除了,直到看到你的问题并发现这是由于 AnyEditPlugin 导致的。谢谢! - Tzafrir
14个回答

354

我假设你的问题是关于Java代码。如果是这样,你实际上不需要任何额外的插件来完成1)。你只需进入首选项-> Java->编辑器->保存操作,并将其配置为删除行尾空格

听起来你还想将此设置为团队范围的设置,对吗?为了让生活更轻松,并避免每次有新工作区时都要记住设置它,你可以将保存操作设置为存储在 SCM 中与代码一起存储的项目特定首选项。

为此,请右键单击项目,然后转到属性-> Java编辑器->保存操作。从那里,您可以启用项目特定设置并将其配置为删除末尾空格(以及其他有用的内容)。

NB:此选项已在Eclipse Kepler(4.3)和以下版本中删除。

NB #2:该选项似乎已在Eclipse Luna-Luna服务发布1a(4.4.1)中恢复。


2
谢谢,gcastro - 它比 AnyEdit 更容易。不幸的是,它适用于整个正在编辑的文件...仍然不知道如何仅对我更改的行进行操作 - 看起来现在可能是不可能的。 - Jan Żankowski
8
适用于Java;同样适用于C/C++;但不适用于PyDev中的Python。 - Craig McQueen
14
对于PyDev中的Python,我已经提出了一个功能请求。请参见:https://sourceforge.net/tracker/?func=detail&aid=2906537&group_id=85796&atid=577332 - Craig McQueen
5
了解... PHP也是同样的概念。 首选项 -> PHP -> 编辑器 -> 保存操作。 - seanmrafferty
1
我不知道这是否曾经有效,但在最新版本的Eclipse(Kepler)中似乎肯定无法工作。您可以仅对编辑过的行运行格式化程序,但修剪空格仅限于所有行或忽略空行 - 这真的很烦人。 - Vala
显示剩余2条评论

161
  1. 删除整个编辑文件中的空格:

首选项 -> Java -> 编辑器 -> 保存操作 -> 勾选 保存时执行所选操作 -> 勾选 其他操作 -> 点击 配置... -> 转到 代码组织 选项卡 -> 勾选 删除行尾空格 -> 选择 所有行

  1. 仅从我更改的行中删除空格:

首选项 -> Java -> 编辑器 -> 保存操作 -> 勾选 "保存时执行所选操作 -> 勾选 格式化源代码 -> 选择 格式化已编辑的行

请注意,不必点击“在格式化程序页面上配置格式化程序设置”-所有代码样式都自动包括删除行尾空格。至少我在格式化程序配置中没有找到此设置,并且它适用于内置的Java约定、Eclipse、Eclipse 2.1 样式,以及 GoogleStyle

当使用这种设置时,您显然还需要 关闭 问题的第一部分的解决方案。

Eclipse version checked: 4.5.2, 4.11

我该如何定义格式?我应该使用Formatter链接还是Configure按钮? - Vijay Kotari
在PHP的PDT中,此选项也出现在“保存操作”下。 - thaddeusmt
1
@VijayKotari的回答已经被编辑 - 不需要定义格式。 - Jan Żankowski

73
你不需要任何插件来完成此操作。例如,如果你使用 JAVA 编写代码,可以通过配置保存操作轻松地删除尾随空格:
Eclipse 3.6
1. 点击 Preferences 2. 选择 Java -> Editors -> Save Actions 3. 勾选 Perform the selected actions on saveAdditional actions 4. 点击 Configure.. 按钮 5. 在 Code organizing 标签中,勾选 Remove trailing whitespace

4
这是第一个明确建议在“其他操作”中查找“删除尾随空格”的答案。谢谢。 - DavidRR
7
这仅适用于Java文件,我通常使用数十个扩展名。 - Heetola
适用于 Eclipse 4.12。 - Matilda Smeds

46

PyDev可以通过设置代码格式选项来执行此操作,方式之一是使用Ctrl+Shift+F,或者在保存时执行:Eclipse -> Window -> Preferences -> PyDev -> Editor -> Code Style -> Code Formatter

我至少使用这些选项:

  • 自动在保存前格式化
  • 右侧修剪行?
  • 在文件末尾添加新行

6
这不涵盖仅从编辑过的行中去除空格的问题。它也是一个危险的功能,因为它运行了所有代码格式化选项,未经检查的选项与“忽略/不使用”不同。例如:如果取消选中“在逗号后使用空格”,代码格式化器将删除这些空格而不是忽略该选项。 - JCotton
7
PyDev代码格式化器中有一个新选项:仅在保存时对更改的行应用格式化。 - warvariuc
3
回答过于笼统,问题只是关于空白处;启用自动代码格式化意味着您的源提交将开始有计划外的内容,导致混乱的历史记录,因为提交包含与提交标题无关的内容。 - Erik Kaplun

37

请按照以下步骤:

偏好设置 -> Java -> 编辑器 -> 保存动作

输入图像描述


20

您可以在Eclipse中将一个键映射到手动删除整个文件中的尾随空格,但仅在请求时而不是自动保存时执行。(首选项/键,然后将一组键映射到文件/删除尾随空格) 如果您想要清理所有新文件,但保持旧代码不变,则这可能很有用。

另一种策略是激活空格的可视化显示,这样至少您会知道何时添加了一些尾随空格。据我所知,没有办法仅显示尾随空格,但我很乐意被证明是错误的。


非常感谢你的回答!到目前为止,这是我在使用 Aptana 插件时找到的唯一方法。 - Igor Zinov'yev

14
在紧急情况下,有些编辑器根本不支持删除行尾的空白(例如XML编辑器),您可以通过查找和替换来从所有行中删除它,启用正则表达式,然后找到“[\t ]+$”并用“”(空)替换它。可能有一个更好的正则表达式可以做到这一点,但是这个方法对我而言没有必要安装AnyEdit就能使用。

9
我会推荐使用AnyEdit。它没有提供特定的功能。然而,如果您和您的团队在每次保存操作时使用AnyEdit功能,那么当您打开一个文件时,它不应该有任何尾随的空格。
因此,如果您修改了这个文件,并且添加了新的尾随空格,在保存操作期间,AnyEdit将只删除这些新的空格,因为它们是此文件中唯一的尾随空格。
如果出于某种原因,您需要保留未被您修改的行上的尾随空格,则我无法为您提供答案,也不确定这种功能是否存在于任何Eclipse插件中...

4
是的,我希望保留未被我修改的行中的空格。这是Intellij Idea的默认行为(删除我的行上的空格,保留其他行的空格),我希望在Eclipse中也能做到这点。感谢您的回答。 - Jan Żankowski

8

5
对于php,还有一个选项:enter image description here

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