VisualStudioでの複数行の検索と置換


83

それはできますか?VS2005とVS2008とVS2010を使用しています。

私は正規表現を意味するのではなく、その場所がありますが、単純な古いテキストが検索されて置き換えられます。\ nタグを使用した正規表現で(ピンチで)それを実行できることはわかっていますが、正規表現のエスケープ文字に巻き込まれたくないので、読みやすさの問題があります。

それができない場合、人々はどのような単純で単純な(無料の)代替手段を使用していますか?それは私たち自身のマクロをノックアップすることを含みません。


3
追加のソフトウェアを検討している/それを行うためのマクロを作成している場合は、弾丸をかじって正規表現の検索/置換の使用方法を学ぶと思います。少なくともそれは組み込まれていて、まともな助けがあります...
Dave D

3
私は正規表現を行う方法を知っていますが、句読点がたくさん含まれているテキストには、非常に多くの正規表現の微調整が必​​要になります。簡単な検索/交換操作のための誰かのお茶だとは信じられません
hawbsl 2010

1
このMSConnect機能リクエストに投票して、このための組み込みソリューションを入手してみてください。
Matt Faus 2012

1
この質問に関する最新情報はありますか?そのコメントから、トップの答えが完全に機能しているようには見えません。...このための良い解決策があった場合、それは素晴らしいことだ
JoeCool

回答:


65

ついに見つけました。

外部マクロをダウンロードしてロードする必要はありません。

少なくとも組み込みのマクロを使用して、Visual Studio2008で動作します。:)

手順:
1)検索するテキストを選択します。
2)「Alt + F8」を押すか、「ツール->マクロ->マクロエクスプローラー」を
開きます。3)「サンプル」->「ユーティリティ」->「FindLine」をダブルクリックします。([検索]フィールドに選択内容が読み込まれた状態で[検索]ボックスが開きます。[検索]フィールドに表示されるテキストの切り捨てについて心配する必要はありません。信頼してください。フィールドにはすべてがあります。MSでの表示方法は...: ))
4)[検索と置換]ダイアログボックスの[クイック置換]ボタンをクリックします。置換をテキストで入力します。
5)そしてあなたの要件に従って3つのボタンのいずれかをクリックしてください...そしてそれは完了です。:)

Hurray ..その動作..それを行うための簡単な方法ではないかもしれませんが、MSでは知っています..簡単で簡単なものはありません.. :)


これは「ファイル内検索」を処理しませんよね?私が知る限り、それは単一ファイルのみですか?
トムリアンザ2011

1
@tlianza VS2010では、画面上部のボタンを使用して、[クイック検索]ダイアログを[ファイル内で検索]または[ファイル内で置換]に変更できます。したがって、マクロがクイック検索ダイアログに入力されたら、別のビューに切り替えることができます。
AaronSieb 2011

13
置換テキストも複数行にまたがる場合、これは機能しないと思います。[置換]ボックスに貼り付けると、切り捨てられます。
Andrew Corkery 2011

キーボードショートカットをこのマクロにリンクするだけで、一般的な検索と置換のように簡単になります。このトリックをありがとうございました!
サミュエル

4
次のVisualStudioバージョンではマクロが廃止されたため、これは機能しなくなりました。
David Burg 2017年

23

これは、今日Visual Studio2012で機能します。

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

(.*\n)+?貪欲ではなく、パーツが複数の行にわたってどのように一致するかを確認します。
fooPatternToStartはスタートラインの正規表現パターンbarPatternToEndですが、下の別の行、おそらく下の多くの行にあるパターンです...

ここに例があります

シンプルで効果的:)

注:VS2012以前は、機能したパターンは次のとおりでした。fooPatternToStart.(.\n)+@.*barPatternToEnd


1
よく説明されており、箱に書かれているとおりに機能します。投稿時でもマクロが死んでから長いことを考えると、これは受け入れられる答えだと思います。
nathanchere 2014年

19

このブログエントリをご覧になることをお勧めします。

VisualStudioでの複数行の検索と置換

検索をエスケープし、VSの検索と置換ダイアログを表示するマクロコードを提供します。


残念ながら、このリンクは無効になっています。
ケイドルー2012

それでもここからは機能します...それが役立つ場合に備えて、コードを要点にコピーしました:gist.github.com/3706886
ロバートアダムス

一時的な問題だったに違いありません。
ケイドルー2012

3
このマクロはVS拡張機能に変換されているため、VS2012および2013で機能するようになりました。helixoft.com/blog/を
Peter Macej 2014年

2
@PeterMacejは、今日のような答えがありますこれはあなたの拡張機能へのリンク-私がupvotedしました-しかし、理想的にあなたがあなた自身の答えを投稿し、私はそれを受け入れるだろう- 2014年のとして、あなたの拡張機能は、おそらくする必要があり、この非常に人気のある質問への受け入れ答え
hawbsl 2014年

18

[検索と置換]ダイアログの[正規表現を使用する]チェックボックスをクリックすると、複数行の式を検索できます。改行は、で示され\nます。

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


6
複数行のテキストに置き換えるにはどうすればよいですか?何か案は?
tauseef 2013年

2
ドキュメントに非表示のキャリッジリターンがある場合は、に変更\nする必要がある場合があり\r\nます。
James McCormack

質問は、正規表現を使用しないことを明示的に述べました。正規表現には、改行をエスケープする必要があるだけでなく、正規表現のエスケープ文字となるすべての一致文字もエスケープする必要があるという欠点があります。(質問に答えないために投票してください)
David Burg 2017年




1

上記の9:52のAndrewCorkery 2011年8月19日のコメントについて:

複数行の置換文字列も指定する場合は、マクロコードを編集し、以下のように置換テキストを設定します。これにより、必要なわずかな変更を加えるだけで、交換を「微調整」できます。

 Sub FindLine()
    Dim textSelection As TextSelection

    textSelection = DTE.ActiveDocument.Selection
    textSelection.CharLeft(True)
    DTE.ExecuteCommand("Edit.Find")
    DTE.Find.FindWhat = textSelection.Text

    'also preset replacement text with current selection
    DTE.Find.ReplaceWith = textSelection.Text
End Sub

0

Notepad ++の最新バージョン(この投稿の時点)は、複数行の検索/置換を行います。これが尋ねられたとき、これが本当だったかどうかはわかりません。しかし、Visual Studioでマクロがサポートされなくなったため、これは現在関連しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.