如何在Eclipse中自动删除尾随空格?


422

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

  1. 如何从正在编辑的整个文件中自动删除结尾的空格?->答案:使用AnyEdit插件,可以将其设置为在保存到文件时执行此操作。
  2. 如何仅从我更改的行中自动删除结尾的空格?->我不知道,将不胜感激。

97
如果我能说服Eclipse停止添加未键入的尾随空白,我会很高兴。
2011年

5
您不需要插件。只需使用C ++->编辑器->保存动作即可。同样,常规->编辑器->文本编辑器->显示空格字符(单击以进行详细设置)非常方便。
Trass3r 2012年

3
默认的保存操作不会修剪Java Doc注释中的尾随空格。而且,它受只能在Java文件上使用的事实的限制。我们有一个代码检查系统,该系统将所有尾随空白标记为错误。AnyEdit对于处理所有文件类型的尾随空格非常有用。另外,查找您的公司对第三方软件有哪些限制可能会很有用。AnyEdit插件具有EPL许可证(opensource.org/licenses/eclipse-1.0.php)[从此处:andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal

1
我不知道为什么突然删除了行尾的空白,直到我看到您的问题并发现这是由于AnyEditPlugin所致。谢谢!
扎弗里尔

Answers:


142
  1. 从要编辑的整个文件中删除空格:

Preferences-> Java-> Editors-> Save Actions->检查Perform the selected actions on save->检查Additional actions->单击Configure..->转到Code organizing选项卡->检查Remove trailing whitespace->选择All lines

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

Preferences-> Java-> Editor-> Save Actions->选中“ Perform the selected actions on save->检查Format source code->选择Format edited lines

请注意,没有必要单击Configure the formatter settings on the Formatter page-所有代码样式都会自动包括删除结尾的空格。至少我在Formatter配置中找不到此设置,并且它对于内置Java约定,Eclipse,Eclipse 2.1样式以及GoogleStyle都是开箱即用的

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

Eclipse version checked: 4.5.2, 4.11

如何定义格式?是否使用格式化程序链接或“配置”按钮?
维杰·科塔里

此选项也将在“ PDT for PHP”中的“保存操作”下显示。
thaddeusmt

1
@VijayKotari答案已被编辑-无需定义格式。
JanŻankowski16年

350

我认为您的问题是关于Java代码的。如果是这样,您实际上不需要任何额外的插件即可完成1)。您可以转到“首选项”->“ Java”->“编辑器”->“保存操作”,然后将其配置为删除尾随空白

听起来,您还希望将其设置为团队范围的设置,对吗?为了使生活更轻松并避免在每次使用新工作区时都必须记住进行设置,您可以将保存操作设置为特定于项目的首选项,并随代码一起存储到SCM中。

为此,右键单击您的项目,然后转到Properties-> Java Editor-> Save Actions。从那里,您可以启用项目特定的设置并将其配置为删除尾随空格(以及其他有用的东西)。

注意:此选项已在Eclipse Kepler(4.3)和后续发行版中删除。

NB#2:该选项似乎又回到了Eclipse Luna中-Luna Service Release 1a (4.4.1)


2
谢谢,gcastro-它比AnyEdit容易。不幸的是,这是针对整个文件的编辑..仍然不知道如何仅针对我更改的行执行此操作-看起来现在可能是不可能的。
2009年

7
对Java有好处;对C / C ++也很好;但不适用于PyDev中的Python。
Craig McQueen

14
对于PyDev中的Python,我已经为此提出了功能要求。请参阅:sourceforge.net/tracker/...
克雷格麦昆

5
仅供参考... PHP的相同概念。首选项-> PHP->编辑器->保存操作。
seanmrafferty 2011年

1
我不知道这种方法是否可行,但是在最新版本的Eclipse(Kepler)中似乎不起作用。您只能在已编辑的行上运行格式化程序,但修剪空白仅限于所有行或忽略空行-真烦人。
Thor84no 2014年

73

您不需要任何插件。例如,如果您编写JAVA代码,则可以擦除尾随空白以配置保存操作:

Eclipse 3.6

Preferences-> Java-> Editors-> Save Actions->检查Perform the selected actions on save->检查Additional actions->单击Configure..按钮。

Code organizing标签中,检查Remove trailing whitespace


4
这是第一个特别建议在“其他操作”下查找“删除尾随空白”的答案。谢谢。
DavidRR 2012年

7
这仅适用于.java文件,我通常使用多种扩展方式
Eildosa 2015年

适用于Eclipse 4.12
Matilda Smeds '19

46

如果您设置了代码格式化程序选项,则PyDev可以通过Ctrl+ Shift+ F来实现,也可以通过during saving

Eclipse-> Window-> Preferences-> PyDev-> Editor-> Code Style-> Code Formatter

我至少使用以下这些:

  • 保存前自动格式化
  • 修剪线合适吗?
  • 在文件末尾添加新行

5
这没有涵盖仅从编辑的行中剥离空间的问题。这也是一个危险的功能,因为它运行所有代码格式化程序选项,并且未经检查的选项与“忽略/不使用”不同。例如:如果未选中“在逗号后使用空格”,则代码格式化程序将删除这些空格,而不是忽略该选项。
JCotton 2011年

7
PyDev代码格式化程序中有一个新选项:保存时,仅在更改的行中应用格式化。
warvariuc 2012年

2
-1给出了一个过于笼统的答案-问题仅是空白;启用自动代码格式意味着您的源提交将开始包含计划外的内容,从而导致混乱的历史记录,因为提交包含的内容与提交标题无关。
Erik Kaplun


19

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

另一种策略是激活空白的可视显示,因此至少在添加尾随空白时您会知道。据我所知,虽然没有办法只显示尾随空格,但是我很高兴被证明是错误的。


非常感谢您的回答!到目前为止,这是我为Aptana插件找到的唯一方法。
伊戈尔·季诺夫

11

对于某些根本不支持删除尾随空格的编辑器(例如XML编辑器),您可以通过查找和替换,启用正则表达式然后找到“ [\ t],将其从所有行中删除。 + $”,然后将其替换为“”(空白)。可能有一个更好的正则表达式可以做到这一点,但是它对我有用,而无需安装AnyEdit。


9

我也会说AnyEdit。它不提供此特定功能。但是,如果您和您的团队在每次保存操作时都使用AnyEdit功能,则在打开文件时,该文件不得包含任何尾随空格。

因此,如果您修改此文件并添加新的尾随空格,则在保存操作期间,AnyEdit将仅删除这些新空格,因为它们是此文件中仅有的尾随空格。

如果由于某种原因,你需要保持尾随空格上都行被你修改的话,我没有答案给你,我不知道这种功能在任何Eclipse插件存在...


4
是的,我想保留我自己未修改的行上的空格。.这是Intellij Idea的默认行为(删除行上的空格,将其保留在其他行上),我想在Eclipse中获得它。 。感谢您的回答。
JanŻankowski09年



4

使用sed(一种Unix命令行工具)有一种非常简单的方法。您可能可以在Eclipse中创建一个宏来运行此宏:

sed -i 's/[[:space:]]*$//' <filename>

4

正如@Malvineous所说,使用“查找/替换”方法删除尾随空格(以下包括制表符U + 0009和空格U + 0020)不是一种专业方法,而是一种解决方法。
只需按Ctrl + F(或命令+ F)

  1. [\t ][\t ]*$
  2. 替换为空白字符串
  3. 使用正则表达式
  4. 全部替换

另外:
要删除前导空格,请查找^[\t ][\t ]*而不是[\t ][\t ]*$
要删除空白行,请找到^\s*$\r?\n


1
怎么样[\t ]+$,而不是[\t ][\t ]*$
乔纳·格雷厄姆

1

对于您问题的第二部分,我不知道有任何解决方案。原因是不清楚如何定义我已更改。何时更改?两次保存之间或两次提交之间...基本上-算了。

我假设您想遵循一些准则,但不要触摸其余的代码。但该指南应整体使用,而不是一丁点。因此,我的建议是-将所有代码更改为准则:这是一次性的操作,但请确保所有开发人员都具有相同的插件(AnyEdit),并且该项目具有相同的设置。


7
由于这是保存操作,因此将在两次保存之间更改行。Eclipse已经跟踪这些行以在侧栏中进行标记。
starblue 2009年

0

我在git中使用了以下命令: git config --global core.whitespace cr-at-eol

它删除^M尾随的字符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.