【问题标题】:How to auto-remove trailing whitespace in Eclipse?如何在 Eclipse 中自动删除尾随空格?
【发布时间】:2010-11-05 19:38:36
【问题描述】:

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

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

【问题讨论】:

  • 如果我能说服 Eclipse 停止添加我没有输入的尾随空格,我会很高兴。
  • 你不需要插件。只需使用 C++ -> 编辑器 -> 保存操作。同样通用 -> 编辑器 -> 文本编辑器 -> 显示空白字符(单击它进行详细设置)非常方便。
  • 默认保存操作不会修剪 Java Doc cmets 中的尾随空格。此外,它受限于它仅适用于 Java 文件这一事实。我们有一个代码审查系统,它将所有尾随空格标记为错误。 AnyEdit 对于处理所有文件类型的尾随空格非常有用。此外,找出贵公司对第三方软件的限制可能会很有用。 AnyEdit 插件具有 EPL 许可证 (opensource.org/licenses/eclipse-1.0.php) [来自这里:andrei.gmxhome.de/anyedit/index.html]
  • 我无法弄清楚为什么突然删除行尾的空格,直到我看到你的问题并发现它是因为 AnyEditPlugin。谢谢!

标签: eclipse whitespace


【解决方案1】:

我假设您的问题与 Java 代码有关。如果是这种情况,您实际上不需要任何额外的插件来完成 1)。您只需转到 Preferences -> Java -> Editor -> Save Actions 并将其配置为 remove trailing whitespace

听上去你也想把它变成一个团队范围的设置,对吧?为了让生活更轻松并避免每次有新工作区时都必须记住设置它,您可以将保存操作设置为项目特定首选项,该首选项与代码一起存储到您的 SCM 中。

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

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

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

【讨论】:

  • 谢谢,gcastro - 它比 AnyEdit 更容易。不幸的是,它是针对正在编辑的整个文件 .. 仍然不知道如何仅针对我更改的行执行此操作 - 看起来现在可能不可能。
  • 适用于 Java;也适用于 C/C++;但不适用于 PyDev 中的 Python。
  • 对于 PyDev 中的 Python,我已经为此提出了功能请求。见:sourceforge.net/tracker/…
  • 仅供参考... PHP 的概念相同。首选项 -> PHP -> 编辑器 -> 保存操作。
  • 我不知道这是否可行,但它似乎在最新版本的 Eclipse (Kepler) 中似乎不可行。您只能在已编辑的行上运行格式化程序,但修剪空白仅限于所有行或忽略空行 - 真的很烦人。
【解决方案2】:
  1. 从正在编辑的整个文件中删除空格

Preferences -> Java -> Editors -> Save Actions -> 检查 执行保存时选择的操作 -> 检查附加操作 -> 单击配置.. -> 转到代码组织 选项卡-> 检查删除尾随空格 -> 选择所有行

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

Preferences -> Java -> Editor -> Save Actions -> 勾选“Perform保存时选择的操作 -> 检查格式化源代码 -> 选择格式化编辑的行

请注意,无需单击在格式化程序页面上配置格式化程序设置 - 所有代码样式都会自动包括删除尾随空格。至少我在 Formatter 配置中找不到此设置,它适用于内置 Java 约定、Eclipse、Eclipse 2.1 样式以及GoogleStyle

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

Eclipse version checked: 4.5.2, 4.11

【讨论】:

  • 如何定义格式?我是使用格式化程序链接还是配置按钮?
  • 此选项也出现在 PDT for PHP 中,在 Save Actions 下。
  • @VijayKotari 答案已编辑 - 无需定义格式。
【解决方案3】:

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

Eclipse 3.6

Preferences -> Java -> Editors -> Save Actions -> 检查执行保存时选择的操作 -> 检查附加操作 -> 单击配置.. 按钮。

代码组织选项卡中,勾选Remove trailing whitespace

【讨论】:

  • 这是第一个专门建议在“其他操作”下查看“删除尾随空格”的答案。谢谢。
  • 这仅适用于 .java 文件,我通常使用十几个扩展名
  • 适用于 Eclipse 4.12
【解决方案4】:

PyDev 可以通过 Ctrl+Shift+F 来实现这样做,或者通过在保存期间

Eclipse -> Window -> Preferences -> PyDev -> Editor -> 代码样式 -> 代码格式化:

我至少使用这些:

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

【讨论】:

  • 这不包括从编辑的行中剥离空间的问题only。这也是一个危险的功能,因为它运行 所有 的代码格式化程序选项,并且未选中的选项与“忽略/不使用”不同。例如:如果未选中“逗号后使用空格”,则代码格式化程序将删除这些空格,而不是忽略该选项。
  • PyDev 代码格式化程序中有一个新选项:保存时,仅在更改的行中应用格式。
  • -1 给出了一个过于笼统的答案——问题只是关于空白;启用自动代码格式化意味着您的源提交将开始在其中包含计划外的内容,从而导致历史混乱,因为提交包含与提交标题无关的内容。
【解决方案5】:

执行以下操作:

首选项 -> Java -> 编辑器 -> 保存操作

【讨论】:

    【解决方案6】:

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

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

    【讨论】:

    • 非常感谢您的回答!到目前为止,这是我为 Aptana 插件找到的唯一方法。
    【解决方案7】:

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

    【讨论】:

      【解决方案8】:

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

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

      如果由于某些原因,您需要保留那些由您修改的行的尾随空格,那么我无法为您解答,我不确定这种功能存在于任何 Eclipse 插件中...

      【讨论】:

      • 是的,我想保留我未修改的行上的空格。这是 Intellij Idea 的默认行为(删除我行上的空格,保留其他行),我'想在 Eclipse 中得到它。感谢您的回答。
      【解决方案9】:

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

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

      【讨论】:

        【解决方案10】:

        对于php还有一个选项:

        【讨论】:

          【解决方案11】:

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

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

          【讨论】:

            【解决方案12】:

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

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

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

            【讨论】:

            • [\t ]+$ 代替[\t ][\t ]*$ 怎么样?
            【解决方案13】:

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

            我假设您希望遵循一些准则,但不要触及代码的其余部分。但该指南应整体使用,而不是用于零碎。所以我的建议是 - 将所有代码更改为指南:这是一次性操作,但请确保您的所有开发人员都拥有相同的插件 (AnyEdit) 和项目的相同设置。

            【讨论】:

            • 因为它是一个保存动作,它会在保存之间改变行。 Eclipse 已经跟踪这些行以在侧栏中进行标记。
            【解决方案14】:

            我对 git 使用了这个命令:git config --global core.whitespace cr-at-eol

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

            【讨论】:

              猜你喜欢
              • 2012-12-20
              • 2016-09-10
              • 2014-12-08
              • 2010-09-26
              • 2012-02-19
              • 2010-09-10
              • 2011-12-06
              • 2013-11-15
              相关资源
              最近更新 更多