2012-02-20 2 views
8

行末が混在しているファイルを開くと、Visual Studioは標準化を促すメッセージを表示します。現在のソリューションのすべてのファイルを正規化する方法はありますか?Visual Studioでライン終端をバッチ正規化する

答えて

2

Visual Studioは全体のために正規行末のためのメカニズムを持っていない:私の質問に答えていない

関連記事溶液。この機能は、基本的には、その時点でファイルを開いて変更したときにファイルが正しいかどうかをチェックすることに限定されます。

ただし、行末の正規化はVisual Studioによって公開されているIEditorOperations::NormalizeLineEndingsのAPIです。したがって、ソリューション内の項目に対してアクションを実行するプラグイン/スクリプトを記述することは可能です。

+0

これはいいですね!私はVS用のプラグイン/スクリプトを書いたことがありません.PowerShellコンソールを開き、すべてのソリューションファイルにループを書くことができますか? – Borek

+1

@Borek残念ながら、実際にはそれほど簡単ではありません。あなたが実行する主な問題は、ユーザーが制御するファイルが何であるかの大きな定義がないことです。たとえば、生成されたファイルに対してはこれをしたくないかもしれませんが、APIの観点からは通常のファイルと大きく違って見えません。また、IDE内のすべてのファイルが実際の物理ファイルをディスクにバックアップするわけではありません(APIからの読み込みも難しい)。一般的にファイルを列挙すると動作しますが、これらのコーナー/特殊なケースはすべて終了します。すべての可能性が高いのは、VSの振る舞いが今日のものである理由です。 – JaredPar

+0

それは残念です。ソリューションエクスプローラに表示されるすべてのものの一覧を取得する簡単な方法があると思います(ファイルです)。 – Borek

5

すべてのファイルを再帰的に正規化するbatファイルを作成できます。

  1. コマンドラインツールTofrodosをダウンロードします。
  2. は以下の内容をごソリューションディレクトリのルートにbatファイルを作成します。

で/ R %% I(* .csファイル)のために行う「C:\ PRGS \ Tofrodos \ドス。 exeファイル」-p "%%あなたはtodos.exe、そしておそらく* は.csフィルタへのファイルパスを更新する必要がi" の

注意。

次に、batファイルを実行し、処理が完了するまで待ちます。

1

私だけ使用メモ帳++の機能を検索と置換:

  1. 設定メモ帳++行末、[表示] - > [ショーのシンボルを表示する - >
  2. セットダイアログファイルから検索を開き、すべての文字を表示しますあなたのソリューションフォルダのn(または\ r \ n)
  3. ポイントディレクトリを\すると置き換える
  4. セットをやっているcoversionかに応じて、Rの\ nを(または\ n)を\するものを見つける
  5. yellowbloodはあなたが \r\n(CRLF)で \n(LF)を交換する場合は、あなたが持っているだろう、アーロン・F.の答えで指摘したように10

あなたはこの

+2

\ nを\ r \ nに置き換えると、時間が掛かります。 – yellowblood

2

を行う前に、あなたが持っているすべての変更をバックアップしたり、コミットする必要がありますそれは既にLFを持っていた人でも、すべてのLFの前にCRを追加するので、悪い時間です。

ただし、ファイル内のバッチ置換をサポートするテキストエディタ(Notepad ++やVisual Studioの「Replace in Files」など)を使用して正規表現を使用して、必要なものを達成できます。たとえば、正規表現オプションを有効にしてください、CRLFとLFを交換し、その後

\r\n 

\r

(?<!\r)\n 

のすべての出現箇所を置き換える

は、キャリッジリターン(CR)で、\n改行(LF)です。パターン(?<!\r)\nは、直前の文字をキャプチャ(すなわち置き換え)せずに、前の文字が改行でない改行に一致します。

これ以外の方法ははるかに簡単です。\r\n\nに置き換えてください。

いつものように、ファイル全体をバックアップし、ソリューション全体を処理する前に1つのファイルで操作をテストしてください。

私はこれをAaron F.の答えにコメントとして追加しましたが、私の評判は十分高くはありません:)

関連する問題