Eclipse和Windows换行符
当我的桌面崩溃时,我必须将Eclipse工作区从Linux移到Windows。 一个星期后,我把它复制回Linux,快乐的代码,承诺CVS。 而唉,windows换行符已经污染了很多文件,所以CVS diff会丢弃整个文件,即使我改变了一两行!
我可以做一个脚本,但我想知道是否会搞乱我的Eclipse项目文件。
正如这里和这里所提到的:
将文件编码设置为
UTF-8
,将新文件的行结束符设置为Unix,这样文本文件就会以不是特定于Windows操作系统的格式进行保存,而且最容易在异构开发人员桌面上共享:
- 导航到工作区首选项(常规:工作区)
- 将文本文件编码更改为
UTF-8
- 将新文本文件行分隔符更改为其他,然后从提取列表中selectUnix
- 注意:要转换现有文件的行尾,请在Eclipse中打开文件,然后select
File : 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