web-dev-qa-db-ja.com

文字列を検索して一致する行を削除するVisual Studioマクロ

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

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

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

27
Hadster

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

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

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

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

FindTextで検索テキストを設定できます:

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

Visual Studioの「検索と置換」機能を使用して、一致する行を削除できます。

重要なのは、行末文字も含めて行全体を一致させることです。これは、ワイルドカードモードまたは正規表現モードで実行できます。ワイルドカードモードでは、式を*で開始し、式を*\nで終了します。アスタリスクは任意の数の文字と一致し、\nは行末文字と一致します。

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


ワイルドカードモードを有効にするには、[検索と置換]ダイアログの[検索オプション]セクションの[使用:]フィールドで[ワイルドカード]を選択します。

Example showing how to turn on wildcard mode

42
benblasdell

Visual Studio 2015では、これがうまくいきました。検索ウィンドウを開き、「正規表現を使用する」チェックマークをオンにします。 「何を見つける」で埋める

.*myCodeHere.*\r?\n

「replace」を空の文字列で埋めます。

13
HolgerJeromin

Visual Studio 2015(マクロもワイルドカードもない)では、次のようにしました。

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

({コード文字列の行})\ r?\ n({次の行のタブ移動})

  • [置換]ボックスは空のままにします
  • 交換する

どこ-

{コード行の文字列} =削除するコード行。かっこや引用符などの文字をバックスラッシュ()でエスケープする必要があることに注意してください。

{next line tabbing} =コードの次の行の前にあるスペースの数(これがないと、行は削除されますが、次の行の前にはスペースが2倍になります)

たとえば、削除するには

DoSomething( "こんにちは");

から-

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

以下を交換

(DoSomething(\ "hello \")\;)\ r?\ n({})

2
Ory Zaidenvorm

属性(私の場合は[OperationContract])を削除しようとしていましたが、他の回答はどれもうまくいきませんでした。私は最終的に次のようにしてそれを動作させました:

\[OperationContract\]\r\n\t\t(正規表現を使用)

1
Justin