Eclipse和Windows换行符

当我的桌面崩溃时,我必须将Eclipse工作区从Linux移到Windows。 一个星期后,我把它复制回Linux,快乐的代码,承诺CVS。 而唉,windows换行符已经污染了很多文件,所以CVS diff会丢弃整个文件,即使我改变了一两行!

我可以做一个脚本,但我想知道是否会搞乱我的Eclipse项目文件。

正如这里和这里所提到的:

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

  • 导航到工作区首选项(常规:工作区)
  • 将文本文件编码更改为UTF-8
  • 将新文本文件行分隔符更改为其他,然后从提取列表中selectUnix

替代文字

  • 注意:要转换现有文件的行尾,请在Eclipse中打开文件,然后selectFile : Convert Line Delimiters to : Unix

提示 :您可以轻松地转换现有文件,方法是在包资源pipe理器中select,然后进入菜单项File : Convert Line Delimiters to : Unix

有一个方便的bash实用程序 – dos2unix – 这是一个DOS / MAC到UNIX文本文件格式转换器,如果尚未安装在您的发行版上,应该能够通过软件包pipe理器轻松安装。 dos2unix手册页

除了Eclipse解决scheme和在另一个答案中提到的工具,请考虑翻转 。 它可以在常规和Windows换行之间“翻转”,并且可以保存文件的时间戳和其他统计信息。

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

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

(我把一个子句忽略你的.git目录,万一你使用git,但由于flip默认情况下忽略了二进制文件,所以你可能不需要这个)。

即使换了一行,我也有同样的,日蚀污染的文件。 解决scheme:Eclipse的git设置 – >添加条目:键:core.autocrlf值:true

在这里输入图像说明

在这里输入图像说明

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

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

你可以试试看。 问题是,当给定一个新行时,Windows会插入一个回车以及一个换行符。 Unix系统只是插入一个换行符。 所以额外的回车字符可能是你的eclipse弄乱了换行的原因。

从你的项目中抓取一个或两个文件并转换它们。 你可以使用Notepad ++来做到这一点。 只要打开文件,转到格式 – >转换为Unix(当你使用Windows)。

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

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