Eclipse和Windows新行

Eclipse和Windows新行,eclipse,newline,delimiter,Eclipse,Newline,Delimiter,当我的桌面崩溃时,我不得不将我的Eclipse工作区从Linux移动到Windows。一周后,我将它复制回Linux,愉快地编写代码,提交给CVS。唉,windows换行符污染了许多文件,所以CVS diff会转储整个文件,即使我更改了一两行 我可以编写一个脚本,但我想知道它是否会弄乱我的Eclipse项目文件。你可以试试。问题是Windows在给定新行时会插入回车符和换行符。Unix系统只需插入一个换行符。因此,额外的回车字符可能是eclipse将换行符弄乱的原因 从项目中获取一个或两个文件并

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


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

你可以试试。问题是Windows在给定新行时会插入回车符和换行符。Unix系统只需插入一个换行符。因此,额外的回车字符可能是eclipse将换行符弄乱的原因

从项目中获取一个或两个文件并转换它们。您可以使用Notepad++来实现这一点。只需打开文件,进入格式->转换到Unix(当您使用windows时)

在Linux中,只需在命令行上尝试以下操作:

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

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

如前所述:

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

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

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

提示:您可以轻松转换现有文件,方法是在包资源管理器中选择then,然后转到菜单项
文件:将行分隔符转换为:Unix

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

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

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

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

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

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

我有相同的、受eclipse污染的文件,即使只更改了一行。 解决方案:Eclipse git设置->添加条目: 关键字:core.autocrlf 价值观:正确


这正是我想要的!我已经为新文件更改了它,但是转换的选项我看不见了。谢谢VonC@瓦苏:不客气:)。大纲视图和包资源管理器包含一些经常被忽略的多个选定元素的功能。我自己通过Eclipse可怕的迷宫般的首选项对话框来搜索这一点让我发疯。如果您在package explorer中选择整个项目,您可以使用
文件:Convert Line Delimiters to:Unix
命令来“修复”我正计划编写一个脚本,在我的eclipse工作区中递归地执行此操作。唯一担心的是损坏任何eclipse内部项目文件。谢谢你的建议!我有大约10万个文件!所以我不得不以某种方式实现自动化。谢谢你的建议!CLI上出现一些键入错误:
sed-i的/$`echo\\\\r`/'yourfile.java
并自动执行
查找-名称“*.java”-exec sed-i's/$`echo\\\r`/'{}\只是一个注释。。。此命令适用于Linux用户,而不是Windows用户。Windows
find
不能以这种方式工作。@Brad是正确的。但是,存在一个Cygwin翻转端口:只需单击几下即可转换项目中少数/所有文件的行尾:虽然这在大多数情况下是一个不错的解决方案,但它可能会咬到您——例如,当您在计算源文件的校验和时。这些将因平台而异。