Eclipse和Windows换行符

时间:2009-12-11 06:27:41

标签: eclipse newline delimiter

当我的桌面崩溃时,我不得不将我的Eclipse工作区从Linux移动到Windows。一周后,我将它复制回Linux,代码愉快,致力于CVS。唉,windows换行已经污染了很多文件,所以CVS diff会转储整个文件,即使我换了一两行!

我可以编写一个脚本,但我想知道它是否会弄乱我的Eclipse项目文件。

6 个答案:

答案 0 :(得分:348)

如上所述herehere

  

将文件编码设置为UTF-8,将新文件的行结束设置为Unix,以便文本文件以非特定于Windows操作系统的格式保存,并且最容易在异构开发人员桌面上共享:

     
      
  • 导航至工作区偏好设置(常规:工作区)
  •   
  • 将文本文件编码更改为UTF-8
  •   
  • 将新文本文件行分隔符更改为其他,并从选择列表中选择Unix
  •   

alt text

  
      
  • 注意:要转换现有文件的行结尾,请在Eclipse中打开该文件并选择File : Convert Line Delimiters to : Unix
  •   

提示:您可以通过在Package Explorer中选择然后转到菜单条目File : Convert Line Delimiters to : Unix

轻松转换现有文件

答案 1 :(得分:10)

即使只有一行更改,我也有同样的eclipse污染文件。 解决方案:Eclipse git设置 - >添加条目: 密钥:core.autocrlf 值:true

enter image description here

enter image description here

答案 2 :(得分:8)

有一个方便的bash实用程序 - dos2unix - 这是一个DOS / MAC到UNIX文本文件格式转换器,如果你的发行版上还没有安装,应该可以通过包管理器轻松安装。 dos2unix man page

答案 3 :(得分:7)

除了another answer中提到的Eclipse解决方案和工具之外,请考虑flip。它可以在正常和Windows换行符之间“翻转”,并且可以保存文件的时间戳和其他统计信息。

您可以像这样使用它来解决您的问题:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(我在一个子句中忽略你的.git目录,如果你使用git,但由于默认情况下flip会忽略二进制文件,你可能不需要这个。)

答案 4 :(得分:3)

你可以尝试一下。问题是Windows在给定新行时插入回车符和换行符。 Unix系统只是插入换行符。因此,额外的回车特征可能是你的日食与换行符混淆的原因。

从项目中获取一个或两个文件并进行转换。您可以使用Notepad ++来执行此操作。只需打开文件,转到Format->转换为Unix(当您使用Windows时)。

在Linux中,只需在命令行上尝试:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java

答案 5 :(得分:3)

要从所有子目录中的CVS / *文件递归删除回车符(\r),请在unix shell中运行以下命令:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;