2011-11-02 7 views
15

私のVisual Studio(2010 C#)ソリューションでは、一致する文字列パターンを含むコードのすべての行を削除する必要があります。文字列を見つけて一致する行を削除するVisual Studioマクロ

たとえば、「.BackColor = System.Drawing.Color.Yellow;」を含むすべての行を削除したいとします。 Visual Studioの検索と置換機能は、一致する行を消去するように指示できないため、十分ではありません。

だから私はそのためにマクロが必要だと思います。どんな助けもありがとうございます。

+0

VSソリューションが必要ですか?テキストパッドのような製品では、フォルダ内のすべてのCSファイルを簡単に調べて、必要な交換を行うことができます。 –

+1

いいえ、VSマクロにする必要はありません。あなたはTextPadでそれを行う方法を私に歩いてもらえますか?私は "ファイルで検索"を行うことができますが(VSと同じように)、結果の行の削除を自動化する方法は見つけられません。 – Hadster

答えて

5

マクロレコーダーを実行して結果のコードを編集して、VSでマクロを作成する傾向があります。

したがって、手動でパターンを検索し、F3キーを押します。マクロを停止します(または、行開始キーを押して、行末を選択し、削除キーを押してマクロを停止します)。

編集マクロ、行を削除するコマンドは次のとおりです。

DTE.ActiveDocument.Selection.SelectLine() 
DTE.ActiveDocument.Selection.Delete() 

あなたはFINDTEXTで検索テキストを設定することができます。

DTE.ActiveDocument.Selection.FindText(".BackColor = System.Drawing.Color.Yellow;", vsFindOptions.vsFindOptionsFromStart) 
32

あなたはの「検索と置換」機能を使用することができますVisual Studioで一致する行を削除します。

キーは、行末の文字を含む行全体と一致することです。ワイルドカードまたは正規表現モードでこれを行うことができます。ワイルドカードモードでは、式を*で開始し、式を*\nで終了します。アスタリスクは任意の数の文字と一致し、\nは行末の文字と一致します。

あなたの場合、検索クエリは「*.BackColor = System.Drawing.Color.Yellow;*\n」になります。置換フィールドは空白のままにしてください。


、ワイルドカードモードを有効に「ワイルドカード」を選択するには「を使用する:」 '検索と置換]ダイアログのセクション「オプション検索]のフィールドを。 Visual Studioの2015年

Example showing how to turn on wildcard mode

+2

偉大な答え - 受け入れられたものよりも優れています! :) – Hybrid

+2

正規表現検索でも動作します。 – mheyman

+1

これは、マクロが削除されたので、Visual Studioの最近のバージョンで実際に動作します。 – Eris

1

(何のマクロとワイルドカードなしがないている)、私は次のようでした:

  • を開き
  • ます(Ctrl + H)の検索と置換正規表現を使用するように設定する(Alt + E)
  • 検索ボックスを
に設定します。

({コード行の行})\ r?\ N({次の行のタブ移動})

  • は=

Where-

{コード列のライン}を交換ラインを空のボックスを交換ままあなたが削除したいコード。

{次の行のタブ} =次の行のコードの前のスペースの数(これを除いて、行は削除されますが、次の行は削除されます)ラインは

のdoSomething( "こんにちは")を削除するには、例えばそれ

前に二重のスペースを持っているでしょう。

から -

class A 
{ 
    void SomeMethod() 
    { 
     DoSomething("hello"); 
     DoSomethingElse(); 
    } 
} 

以下

(doSomethingの(\ "\こんにちは")\;)に置き換え\ R \ N({})このために働いたのVisual Studio 2015と

+0

VS2013にはワイルドカードもマクロもなく、「[MyAttribute]」は決して見つかりません。私は、([MyAttribute])\ r?\ n({})、([MyAttribute])\ r?\ n({})、([MyAttribute])\ r \ n({})、([MyAttribute] ])\ n({})、(\ [MyAttribute \])\ r?\ n({})。何か案は? – JoanComasFdz

+0

私はそれを見つけました:FindWhat = "\ [MyAttribute \] \ r \ n"引用符なし。 ReplaceWith = "\ r \ n"引用符なし。 UseRegluarExpressions = trueです。 – JoanComasFdz

2

?私。検索ウィンドウを開き、「正規表現を使用する」チェックマークを選択します。

.*myCodeHere.*\r?\n 

「空白の文字列で置き換える」と入力してください。

+0

これは行を削除しません。これにより空の行が残されます。大きな違い。 – claudekennilol

+2

はい、これは私にとってもショーストッパーになります。しかし、それは空の行を残していない... – Holger

関連する問題