EclipseとWindowsの改行


182

デスクトップがクラッシュしたとき、EclipseワークスペースをLinuxからWindowsに移動する必要がありました。1週間後、私はそれをLinuxにコピーし、喜んでコード化し、CVSにコミットします。そして、悲しいかな、ウィンドウの改行は多くのファイルを汚染しているので、1行か2行変更した場合でも、CVS diffはファイル全体をダンプします。

スクリプトを作成することはできましたが、それがEclipseプロジェクトファイルを台無しにしてしまうのではないかと思っています。


1
数回クリックするだけでプロジェクト内のいくつか/すべてのファイルの行末を変換する場合:stackoverflow.com/a/7019737/1364747
Teddy

回答:


358

ここここで述べたように:

ファイルエンコーディングをに設定しUTF-8、新しいファイルの行末をUnixに設定して、テキストファイルがWindows OSに固有ではない形式で保存され、異種の開発者デスクトップ間で最も簡単に共有されるようにします。

  • ワークスペース設定に移動します(一般:ワークスペース)
  • テキストファイルのエンコーディングを UTF-8
  • 新しいテキストファイルの行区切り文字をその他に変更し、選択リストからUnixを選択します。

代替テキスト

  • 注:既存のファイルの行末を変換するには、Eclipseでファイルを開き、 File : Convert Line Delimiters to : Unix

ヒント:既存のファイルを簡単に変換するには、パッケージエクスプローラーでを選択し、メニューエントリに移動します。File : Convert Line Delimiters to : Unix


2
それがまさに私が探していたものです!私はすでに新しいファイル用にそれを変更していましたが、変換するオプション-私の目を逃しました。VonC、ありがとう!
Vasu

@Vasu:どういたしまして:) アウトラインビューとパッケージエクスプローラーには、見落とされがちな複数選択された要素の機能がいくつか含まれています。
VonC、2009

素晴らしい記事。Eclipseの恐ろしい迷宮の設定ダイアログを介してこれを自分で検索すると、私は気が狂いました。
セリン

39
パッケージエクスプローラーでプロジェクト全体を選択した場合、File : Convert Line Delimiters to : Unixコマンドを使用して、プロジェクト内のすべてのファイルを一度に「修正」できます。
Tal Weiss

11

1行変更しても、同じEclipseで汚染されたファイルがありました。解決策:Eclipse git設定->エントリの追加:キー:core.autocrlf値:true

ここに画像の説明を入力してください

ここに画像の説明を入力してください


これはほとんどの場合に問題のない解決策ですが、たとえばソースファイルのチェックサムを計算している場合など、問題が発生する可能性があります。これらはプラットフォームごとに異なります。
zb226

8

便利なbashユーティリティがあります。dos2unixこれはDOS / MACからUNIXへのテキストファイル形式コンバーターであり、ディストリビューションにまだインストールされていない場合は、パッケージマネージャーを介して簡単にインストールできます。 dos2unix manページ


私は日食のワークスペースでこれを再帰的に行うスクリプトを書くつもりでした。心配なのは、Eclipseの内部プロジェクトファイルが破損することだけでした。あなたの提案をありがとう!
Vasu

7

Eclipseソリューションと別の回答で言及されているツールに加えて、フリップを検討してください。通常の改行とWindowsの改行との間でどちらの方法でも「フリップ」でき、ファイルのタイムスタンプやその他の統計情報を保持するなどの優れた機能を果たします。

このように使用して問題を解決できます。

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

(gitを使用する場合に備えて、.gitディレクトリを無視するように句を追加しましたが、flipはデフォルトでバイナリファイルを無視するため、これは必要ない場合があります。)


ただ注意してください...このコマンドはLinuxユーザー向けであり、Windowsユーザー向けではありません。Windows findはこの方法では機能しません。
ブラッド

@Bradは正しいです。ただし、フリップのCygwinポートが存在します:github.com/jaalto/cygwin-package--flip
Michael Scheper '31年

3

あなたはそれを試してみることができます。問題は、Windowsが新しい行を指定すると、改行だけでなくキャリッジリターンも挿入することです。Unixシステムは改行を挿入するだけです。したがって、余分なキャリッジリターン文字が、Eclipseが改行を混乱させる理由である可能性があります。

プロジェクトから1つまたは2つのファイルを取得して変換します。Notepad ++を使用してこれを行うことができます。ファイルを開き、「フォーマット」->「Unixに変換」に移動します(Windowsを使用している場合)。

Linuxでは、コマンドラインでこれを試してください:

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

約10kのファイルがあります!だからどういうわけかそれを自動化しなければならなかった。アドバイスありがとうございます!
Vasu

CLIの誤植: sed -i 's/$`echo \\\r`//' yourfile.java自動化するためfind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem

3

\rすべての子ディレクトリのCVS / *ファイルからキャリッジリターン()を再帰的に削除するには、UNIXシェルで次のコマンドを実行します。

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.