Eclipse如何判断一个文件是使用Unix还是DOS风格的换行符?

8
我正在Windows上的Eclipse中查看一些Java代码。行终止字符(DOS风格)无法正确显示(到处都是空行..)。
问题在于该代码来自于一个Windows ClearCase vob,我没有检入权限,因此它是只读的(使用自动格式更改行终止字符不可能)。创建完整副本并更改行终止符是不可行的,因为在我查看代码时,代码可能会发生变化。
我找到了"首选项->工作区->“新文本文件行分隔符”,但似乎这样做不能正确显示现有文件中的行终止符。
如何使eclipse按原本的方式显示文本文件?
编辑: 记事本正确显示文件。Ultra-Edit也将其检测为Unix风格,并建议将其转换为DOS(但在拒绝后正确显示)。 gvim将文件检测为Unix并显示行末的^M。
我已经以二进制方式检查了文件,并且没有包含不遵循\r字符的\n字符。 Eclipse是否还有其他区分Unix和DOS风格行尾的方法?
我发现这个字符序列:0d0d 0a0d 0d0a(\r\r\n\r\r\n)。我想这就是为什么它无法正常工作的原因。

我进行了一些初步的研究和测试。我发现这与Eclipse本身无关,而是与实际文件本身有关。当它们被检入像SVN和CVS这样的版本控制系统时,它们会被错误地编码,因此当它们被检出时,在Eclipse中显示为双行而在其他编辑器中显示为单行。您可以通过使用UltraEdit替换(全部替换)^p(不是空格)为^p来暂时解决问题,但永久解决方案是正确的SVN/CVS配置。 - ADTC
4个回答

4
你正在运行哪个操作系统? Eclipse会自动检测行终止符。 我从未见过它失败并显示多余的换行符。你的文件可能实际上没有双倍换行符吗? 也许尝试使用另一个编辑器(如notepad ++、editplus)查看它。

1
Eclipse自动检测行终止符,我从未见过它失败。我也是(+1)。 - Sean Patrick Floyd
嗯,我要工作的环境可能有点恶劣 - Windows 和 Unix 的Clearcase 混合使用,文件也以各种其他方式传输,并且还涉及外包(到一个遥远的国家)。。 - 0x89
你需要确保项目中的每个人都同意某种换行符类型,并坚持使用它。你可以使用Eclipse来转换行终止符(文件->转换换行符或类似选项)。 - Omry Yadan

1
我也遇到了换行符的问题,我注意到在Eclipse中快速查看比如Notepad++等编辑器有些困难,但是我发现它可以通过使用内置功能快速找到:
在工具栏中有一个“显示空格字符”按钮(符号Π:¶),当你按下它时,你会在行末看到以下字符之一:
- 对于Windows EOL(CRLF)文件:¤¶ - 对于Unix EOL(LF)文件: 这样你就能够看到你的EOL编码并通过使用“文件”菜单进行转换。
如果你例如使用git,你也可以设置一个选项来自动转换所有包含特定EOL的提交。但是有时由于未知原因,即使我在Linux VM下使用Eclipse,文件也会带有Windows EOL。Eclipse内置功能允许一次性查看编码。

1

前往首选项->常规->工作区 您会看到文本文件编码,您可以更改为您喜欢的编码方式 还有新文本文件行分隔符,您可以选择使用Unix、Windows或Mac OS。


0
我们处于一个混合环境中,使用ClearCase(Unix VOB服务器)和Windows ClearCase客户端,并使用Eclipse。
我没有观察到这样的问题,但我知道ClearCase可以通过特定方式管理某些类型:请参阅使用Rational ClearCase Unicode类型管理器。 通过描述(cleartool describe)导致问题的文件类型,您可能会看到一个特殊的文件类型,这可能是第一个解释。
另一个经典原因可能包括ClearCase触发器以某种方式破坏了该文件的内容。

我认为问题更多地在于开发人员缺乏纪律(和技术知识)。某人不知怎么地在文件中添加了几个额外的\r,如上所示。 - 0x89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接