当我的桌面崩溃时,我不得不将我的Eclipse工作区从Linux移动到Windows。一周后,我将它复制回Linux,代码愉快,致力于CVS。唉,windows换行已经污染了很多文件,所以CVS diff会转储整个文件,即使我换了一两行!
我可以编写一个脚本,但我想知道它是否会弄乱我的Eclipse项目文件。
答案 0 :(得分:348)
将文件编码设置为
UTF-8
,将新文件的行结束设置为Unix,以便文本文件以非特定于Windows操作系统的格式保存,并且最容易在异构开发人员桌面上共享:
- 导航至工作区偏好设置(常规:工作区)
- 将文本文件编码更改为
UTF-8
- 将新文本文件行分隔符更改为其他,并从选择列表中选择Unix
- 注意:要转换现有文件的行结尾,请在Eclipse中打开该文件并选择
File : Convert Line Delimiters to : Unix
提示:您可以通过在Package Explorer中选择然后转到菜单条目File : Convert Line Delimiters to : Unix
答案 1 :(得分:10)
答案 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 {} \;