我想通过 Eclipse 代码编辑器中的查找/替换方法从代码中删除所有空白行。
我使用正则表达式
\n\s*\n
查找所有空白行,但在用任何字符串替换空白行时出现错误"Incompatible line delimiter near index 55110"
。
为什么我收到此错误以及如何正确删除空行?工作替换字符是什么?
有没有适合此类工作的 Eclipse 插件?
我不确定这是否是您具体问题的答案,但解决方案 \.. 表示 Windows 和 UNIX 文本编码之间不兼容。因此,一个简单的解决方案是将文件转换为 UNIX 编码
在 Eclipse 中
Menu -> File -> Convert line delimiter -> Unix
您可以尝试更换这个:
^\s*\r?\n
用空字符串。
尝试使用
\R
而不是 \n
\R 任何 Unicode 换行序列 \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
我尝试了你的表达方式,它组合了一些线条。我发现这个可以用:
\n\s*$
替换[无]。
不过,无法解决这个神秘的错误。我想知道你是否有一个损坏的文件,也许是一个杂散的 CR/LF 混淆。
(至于插件……不知道有什么,但是,好吧,学习 awk、sed、perl……它们总是会为您的各种文本编辑工作提供良好的服务。)
为了回答有关
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
错误的人有所帮助。
这对我有用了很多年:
替换:[ ]+$
有空白
我多年来一直遇到这个问题(或其变体),我怀疑这是由于与 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.) 全部替换
如果您不按顺序执行此操作或者首先弄乱文件,您将收到有关“不兼容的行分隔符”的错误,如问题中所示。
最简单的解决方案可能是 sivi 的(@sivi):
“在 Eclipse 菜单 -> 文件 -> 转换行分隔符 -> Unix”
然后你就会知道你所有的线端都是 .
采用 SpliFF (@Spliff) 关于混合行结尾的提示,我发现我试图匹配的行具有一致的混合 和 。编写我的正则表达式来搜索每行的正确结尾( 或者 )删除了“不兼容的行定界符”错误。
您的行结尾可能会有所不同,例如 。您可以确定您的线路末端到底是什么。我通过蛮力确定了我的目标——寻找一些可能性: , , , .