通过查找/替换(Ctrl+F)删除 Eclipse 代码编辑器中的空行

问题描述 投票:0回答:8

我想通过 Eclipse 代码编辑器中的查找/替换方法从代码中删除所有空白行。

我使用正则表达式

\n\s*\n
查找所有空白行,但在用任何字符串替换空白行时出现错误
"Incompatible line delimiter near index 55110"

为什么我收到此错误以及如何正确删除空行?工作替换字符是什么?

有没有适合此类工作的 Eclipse 插件?

regex string eclipse
8个回答
15
投票

我不确定这是否是您具体问题的答案,但解决方案 \.. 表示 Windows 和 UNIX 文本编码之间不兼容。因此,一个简单的解决方案是将文件转换为 UNIX 编码

在 Eclipse 中

Menu -> File -> Convert line delimiter -> Unix


10
投票

您可以尝试更换这个:

^\s*\r?\n

用空字符串。


4
投票

尝试使用

\R
而不是
\n

\R 任何 Unicode 换行序列 \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]


3
投票

我尝试了你的表达方式,它组合了一些线条。我发现这个可以用:

\n\s*$

替换[无]。

不过,无法解决这个神秘的错误。我想知道你是否有一个损坏的文件,也许是一个杂散的 CR/LF 混淆。

(至于插件……不知道有什么,但是,好吧,学习 awk、sed、perl……它们总是会为您的各种文本编辑工作提供良好的服务。)


2
投票

为了回答有关

incompatible line delimiter near index
错误的问题的第一部分,Eclipse 似乎在根据
Text file encoding
New text file line delimiter
设置替换给定行分隔符方面存在问题。

我遇到了一个问题,Windows 应用程序错误地格式化了 UNIX 格式的源文件,在它认为合适的地方插入了 CRLF。由于特殊情况,我不得不用空格替换所有 CRLF。由于该错误,Eclipse 不允许我这样做,但抓住前面和后面的字符就可以了:

Find   : (.)\r\n(.)
Replace: $1 $2

使用 wjans 建议的答案:

Find   : ^\s*\r?\n(.)
Replace: $1

我希望这对那些仍然遇到

incompatible line delimiter
错误的人有所帮助。


0
投票

这对我有用了很多年:

替换:[ ]+$

有空白


0
投票

我多年来一直遇到这个问题(或其变体),我怀疑这是由于与 Mac 用户共享文件服务器引起的,特别是 Dreamweaver 用户(基本上是图形艺术家)。看起来它会将其编辑(上传?)的文件更改为混合/奇怪的行结尾,这些行结尾似乎是 NL+CR(十六进制 0a0d)、双 CR(0d0d)和统一换行符(0a)的组合。

如果您在 vim 中打开同一个文件,它不是双倍行距,但所有行都以 ^M 符号结尾。

无论如何,此页面上的解决方案都不适合我,但我找到了一些可行的解决方案。

您需要按顺序执行这些步骤(Eclipse 4.2.2)

1.) 文件 -> 将行分隔符转换为 -> MacOS 9 (CR, )

2.) 编辑 -> 查找/替换 (Ctrl - F)

Find: \r$
Replace: leave blank

3.) 全部替换

如果您不按顺序执行此操作或者首先弄乱文件,您将收到有关“不兼容的行分隔符”的错误,如问题中所示。


0
投票

最简单的解决方案可能是 sivi 的(@sivi):

“在 Eclipse 菜单 -> 文件 -> 转换行分隔符 -> Unix”

然后你就会知道你所有的线端都是 .

采用 SpliFF (@Spliff) 关于混合行结尾的提示,我发现我试图匹配的行具有一致的混合 和 。编写我的正则表达式来搜索每行的正确结尾( 或者 )删除了“不兼容的行定界符”错误。

您的行结尾可能会有所不同,例如 。您可以确定您的线路末端到底是什么。我通过蛮力确定了我的目标——寻找一些可能性: , , , .

© www.soinside.com 2019 - 2024. All rights reserved.