web-dev-qa-db-ja.com

VSソリューション全体の一貫性のない行末を修正する方法は?

Visual Studioは、ファイルを開くときに一貫性のない行末を検出し、その特定のファイルに対して修正するオプションがあります。ただし、ソリューション内のすべてのファイルの行末を修正する場合、どうすればよいですか?

43
Borek Bernard

より完全な答えを得るために、これは私にとって最もうまくいきました:

交換

(?<!\r)\n

\r\n

「regEx」オプションを使用したソリューション全体。

これにより、これまで正しい行末がなかったすべてのファイルに正しい行末が設定されます。ネガティブルックアヘッドを使用して、\ nの前に\ rが存在しないことを確認します。

他の解決策に注意してください:それらは、すべてのファイルのすべての行を変更するか(元の行末を無視して)、各行の最後の文字を削除します。

24
Unchained

[ファイルで置換]コマンドを使用して、正規表現を有効にできます。たとえば、単一の改行「\ n」を持つ行末(例えば、GitHubなど)を標準のWindowsキャリッジリターン改行「\ r\n」に置き換えるには、次を検索します。

([^\r]|^)\n

これは、グループを作成することを意味します(そのため、括弧が必要です)。最初の文字は、キャリッジリターンではないか、行の先頭です。行テストの開始は、実際にファイルの先頭でのみ行われます(たまたま "\ n"で始まる場合)。グループに続くのは改行です。したがって、間違った行末を持つ「;\n」は一致しますが、正しい行末である「\ r\n」は一致しません。

それを次のように置き換えます:

$1\r\n

これは、グループ($ 1)を保持し、「\ n」を「\ r\n」に置き換えることを意味します。

9
Ron

やってみて

Edit > Advanced > Format Document

その後、ドキュメントを保存します。ファイルが別の外部エディターによって変更されない限り、一貫性を保つ必要があります。私のためにそれを修正します。

7
Flickayy

更新:注意してください。既にコードリポジトリに完全にコミットしており、意図しない変更をロールバックできる場合を除き、これを行わないでください。以下のコメントを読んでください。私のために働いたものはあなたのために働かないかもしれません。


Ronの答えは本当に助けに近いものでしたが、Visual Studioで動作するように調整する必要がありました。

1)これを修正したいソリューションを開きます。

2)ドキュメントのがらくたを編集する可能性があり、これで他の保留中の変更を元に戻したくないので、保留中の変更がすべてチェックインされていることを確認します。

3)任意のドキュメントでCtrl + Fを押して検索ボックスを開き、左側の下矢印アイコンをクリックして検索/置換ボックスに展開します。

4)一番上の行に貼り付けます:

([^\r]|^)\n

一番下の行に貼り付けます:

\r\n

5).*アイコンを有効にして、「正規表現を使用」機能を有効にします。

6)そのアイコンの横のドロップダウンを変更して、「ソリューション全体」または「すべての開いているドキュメント」、または状況に適したものを表示します。

7)アイコンにab -> acを表示する[すべて置換]ボタンをクリックします。

以上です!

余談ですが、UnityのスクリプトテンプレートはすべてMonoDevelopで作成されているため、デフォルトでMacの行末になっています。パス内のすべてのドキュメントを編集する必要がありました。

C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates

したがって、すべてをVisual Studioで開き、上記で説明したプロセスに従って、手順6で「すべての開いているドキュメント」を使用しました。

1
Jim Yarbro

CygutilsパッケージがインストールされたCygwinがある場合、Cygwinシェルから次の一連のコマンドを使用できます。

unix2dos -idu *。cpp | sed -e 's/0[1-9] [0-9]//' -e 's/[1-9] [0 -9] *0 // '| sed '/ [1-9] [0-9]/!d' | sed -e 's /[1-9] [0-9]//' | xargs unix2dos

*。cppを必要なワイルドカードに置き換えてください)

これがどのように機能するかを理解するには、unix2dosコマンドを使用してファイルを変換しますが、変換する必要があるのは一貫性のない行末(つまり、UNIXとDOSの混合)を持つファイルのみです。 -iduオプションは、ファイル内のdosおよびunix行末の数を表示します。例えば:

   0     491  Acad2S5kDim.cpp
 689       0  Acad2S5kPolyline.cpp
   0     120  Acad2S5kRaster.cpp
 433      12  Acad2S5kXhat.cpp
   0     115  AppAuditInfo.cpp

ここでは、変換する必要があるのはAcad2S5kXhat.cppファイルのみです。 sedコマンドは出力をフィルター処理して、変換する必要があるファイルのみのリストを生成し、これらはxargsを介して処理されます。

1
John Matthews