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

How to auto-remove trailing whitespace in Eclipse?

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

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

  • 我假设您的问题与Java代码有关。如果是这种情况,你实际上并不需要任何额外的插件来完成1)。您可以转到首选项 - > Java - >编辑器 - >保存操作,并将其配置为删除尾随空格。

    通过它的声音,你也想让这个团队成为一个整体,对吧?为了使生活更轻松,避免每次有新工作区时都要记住设置,您可以将保存操作设置为项目特定的首选项,并将其与代码一起存储到SCM中。

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

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

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


  • 从正在编辑的整个文件中删除空格:
  • Preferences - > Java - > Editors - > Save Actions - >检查save Perform选择操作 - >检查Additional actions - >点击Configure.. - >去Code organizing选项卡 - >检查Remove尾随whitespace - >选择All lines

  • 仅从我更改的行中删除空格:
  • Preferences - > Java - > Editor - > Save Actions - >检查"Perform在save上选择的操作 - >检查Format源代码abbbd - >选择Format编辑的lines

    注意,没有必要在Formatter page上单击Configure formatter设置 - 所有代码样式自动包括删除尾随空格。至少我在Formatter配置中找不到这个设置,它开箱即用,内置Java约定,Eclipse,Eclipse 2.1样式以及GoogleStyle。

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

    1
    Eclipse version checked: 4.5.2


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

    Eclipse 3.6

    Preferences - > Java - > Editors - > Save Actions - >检查Perform在save上选择的操作 - >检查Additional actions - >单击Configure..按钮。

    Code organizational选项卡中,检查Remove尾随whitespace


    PyDev可以通过Ctrl + Shift + F执行此操作,如果您设置了代码格式化程序选项,或者通过during saving

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

    我至少使用这些:

    • 保存前自动格式化
    • 正确的修剪线?
    • 在文件末尾添加新行


    做以下事项:

    Preferences - > Java - > Editor - > Save Actions

    enter image description here


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

    另一个策略是激活空白的视觉显示,所以至少你会知道你何时添加一些尾随空格。据我所知,虽然没有办法只显示尾随的空格,但我很高兴被证明是错的。


    对于那些根本不支持删除尾部空格的编辑器(例如XML编辑器),你可以通过执行查找和替换,启用正则表达式,然后找到"[ t]"将其从所有行中删除。 + $"并替换为"(空白)。可能有更好的正则表达式,但它适用于我而无需安装AnyEdit。


    现在不可能以通用的方式在Eclipse中完成它,但是可以通过基本的Java知识和一些空闲时间为这个https://bugs.eclipse.org/bugs/show_bug.cgi添加基本支持来改变它吗? ID = 180349

    依赖问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 311173


    我也会说AnyEdit。它没有提供这种特定的功能。但是,如果您和您的团队在每个保存操作中使用AnyEdit功能,那么当您打开文件时,它不能具有任何尾随空格。

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

    如果由于某些原因,你需要在你没有修改的行上保留尾随空格,那么我没有你的答案,我不确定任何Eclipse插件中是否存在这种特性......


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


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

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


    正如@Malvineous所说,使用Find / Replace方法删除尾随空格(下面包括U + 0009标签和空格U + 0020)不是专业的,而是一种解决方法。
    只需按Ctrl + F(或命令+ F)

  • 找到[\t ][\t ]*$
  • 替换为空白字符串
  • 使用正则表达式
  • 全部替换
  • 额外的:
    要删除前导空格,请找到^[\t ][\t ]*而不是[\t ][\t ]*$
    要删除空行,请找到^\s*$
    ?


    我将这个命令用于git:git config --global core.whitespace cr-at-eol

    它删除尾随的^M个字符。


    我不知道你的问题的第二部分有任何解决方案。原因是我不清楚如何定义我改变了。改变了什么时候?只需2次保存或提交之间......基本上 - 忘了它。

    我假设你想坚持一些准则,但不要触及其余的代码。但该指南应该全面使用,而不是用于咬和碎片。所以我的建议是 - 将所有代码更改为指南:它是一次性操作,但要确保所有开发人员都具有相同的插件(AnyEdit),并具有相同的项目设置。