这个问题有两个部分,其中一个我已经有了答案。
- 如何从正在编辑的整个文件中自动删除尾随空格?-> 答:使用AnyEdit 插件,可以设置为在任何保存到文件时执行此操作。
- 如何仅从我更改的行中自动删除尾随空格?-> 这个我不知道,希望有任何帮助。
这个问题有两个部分,其中一个我已经有了答案。
我假设您的问题与 Java 代码有关。如果是这种情况,您实际上不需要任何额外的插件来完成 1)。您只需转到Preferences -> Java -> Editor -> Save Actions并将其配置为删除尾随空格。
听上去你也想把它变成一个团队范围的设置,对吧?为了让生活更轻松并避免每次有新工作区时都必须记住设置它,您可以将保存操作设置为项目特定首选项,该首选项与代码一起存储到 SCM 中。
为此,请右键单击您的项目并转到Properties -> Java Editor -> Save Actions。从那里您可以启用项目特定设置并将其配置为删除尾随空格(以及其他有用的东西)。
注意:这个选项在 Eclipse Kepler (4.3) 和后续版本中被移除。
NB #2:该选项似乎又回到了 Eclipse Luna -Luna Service Release 1a (4.4.1)
Preferences-> Java-> Editors-> Save Actions-> 检查Perform the selected actions on save-> 检查Additional actions-> 单击Configure..-> 转到Code organizing选项卡 -> 检查Remove trailing whitespace-> 选择All lines。
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
你不需要任何插件来做到这一点。例如,如果您编写 JAVA 代码,则可以删除配置保存操作的尾随空格:
日食 3.6
Preferences-> Java-> Editors-> Save Actions-> 检查Perform the selected actions on save-> 检查Additional actions-> 单击Configure..按钮。
在Code organizing选项卡中,检查Remove trailing whitespace
如果您设置了代码格式化程序选项,PyDev可以通过Ctrl++或通过Shift:Fduring saving
Eclipse-> Window-> Preferences-> PyDev-> Editor-> Code Style-> Code Formatter:
我至少使用这些:
执行以下操作:
Preferences-> Java-> Editor->Save Actions
您可以在 Eclipse 中映射一个键以手动删除整个文件中的尾随空格,但只能在请求时而不是在保存时自动删除。(首选项/键,然后将一组键映射到文件/删除尾随空格)如果您想清理所有新文件,但保持遗留代码不变,这可能很有用。
另一种策略是激活空白的视觉显示,因此至少您会知道何时添加一些尾随空白。据我所知,虽然没有办法只显示尾随空格,但我很高兴被证明是错误的。
在紧要关头,对于那些根本不支持删除尾随空格的编辑器(例如 XML 编辑器),您可以通过执行查找和替换,启用正则表达式,然后找到 "[\t] 从所有行中删除它+$" 并将其替换为 ""(空白)。可能有更好的正则表达式可以做到这一点,但它对我有用,无需安装 AnyEdit。
我也会说 AnyEdit。它不提供此特定功能。但是,如果您和您的团队在每次保存操作时都使用 AnyEdit 功能,那么当您打开文件时,它不能有任何尾随空格。
因此,如果您修改此文件,并且添加新的尾随空格,那么在保存操作期间,AnyEdit 将仅删除这些新空格,因为它们是此文件中唯一的尾随空格。
如果由于某些原因,您需要在未修改的行上保留尾随空格,那么我无法回答您,并且我不确定任何 Eclipse 插件中是否存在这种功能......
现在不可能在 Eclipse 中以通用方式进行操作,但是可以通过基本的 Java 知识和一些空闲时间来更改它以添加对此https://bugs.eclipse.org/bugs/show_bug.cgi的基本支持?编号=180349
对于 php,还有一个选项:
使用 Unix 命令行工具 sed 有一种非常简单的方法。您可能可以在 Eclipse 中创建一个宏来运行它:
sed -i 's/[[:space:]]*$//' <filename>
正如@Malvineous 所说,使用 Find/Replace 方法删除尾随空格(下面包括制表符 U+0009 和空格 U+0020)并不专业,而是一种解决方法。
只需按 Ctrl + F(或 command + F)
[\t ][\t ]*$
extra:
删除前导空格,find^[\t ][\t ]*
而不是[\t ][\t ]*$
删除空行,find^\s*$\r?\n
我不知道您问题第二部分的任何解决方案。原因是不清楚如何定义I changed。什么时候改的?只是在 2 次保存或提交之间......基本上 - 算了吧。
我假设你想坚持一些指导方针,但不要触及代码的其余部分。但该指南应整体使用,而不是用于零碎。所以我的建议是 - 将所有代码更改为指南:这是一次性操作,但请确保您的所有开发人员都拥有相同的插件(AnyEdit)和项目的相同设置。
我对 git 使用了这个命令:git config --global core.whitespace cr-at-eol
它删除^M
了尾随的字符。