190

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

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

4

6 回答 6

364

herehere所述:

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

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

替代文字

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

提示:您可以通过在包资源管理器中选择然后转到菜单项来轻松转换现有文件File : Convert Line Delimiters to : Unix

于 2009-12-11T12:01:41.813 回答
12

即使更改了一行,我也有相同的 eclipse 污染文件。解决方法:Eclipse git settings -> Add Entry: Key: core.autocrlf Values: true

在此处输入图像描述

在此处输入图像描述

于 2016-11-11T09:55:01.573 回答
8

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

于 2009-12-11T06:42:52.857 回答
7

除了另一个答案中提到的 Eclipse 解决方案和工具之外,还可以考虑翻转。它可以在普通换行符和 Windows 换行符之间“翻转”,并且可以做一些不错的事情,例如保留文件的时间戳和其他统计信息。

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

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

(我添加了一个子句来忽略你的 .git 目录,以防你使用 git,但由于 Flip 默认忽略二进制文件,你可能不需要这个。)

于 2013-01-10T02:14:13.663 回答
3

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

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
于 2011-08-10T14:22:57.177 回答
3

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

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

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

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
于 2009-12-11T06:39:45.967 回答