Visual Studio 2005(以降、VS 2005)やVisual Studio .NET(以降、VS.NET)には、複数のファイルから(正規表現などを用いて)文字列を検索したり、置換したりする機能が搭載されている。具体的には「フォルダを指定して検索」「フォルダを指定して置換」という機能だ。
正規表現とワイルドカード
これらの機能の活用方法を説明する前に、そこで使える正規表現とワイルドカードについて簡単に説明しておこう。
正規表現とは、「^」(=行頭)や「$」(=行末)、「|」(=または)などの記号/式を使って、検索する文字列のパターンを指定する機能だ。例えば正規表現の記号「|」を含めた「Public|Publish」という文字列で検索した場合には、「Public」と「Publish」がヒットするようになる。
ただしVisual Studioで使用できる正規表現の構文は、.NET Frameworkプログラミング(Regexクラス)で使える正規表現の構文と若干異なることがあるので注意が必要だ(例えば中カッコ({〜})は、.NET Frameworkプログラミングでは「前の文字を何回繰り返すか」という量指定子を表すが、Visual Studioでは該当部分を置換後の文字列で利用・出力できるようにする「タグ付き正規表現」を表す)。
Visual Studioの正規表現について詳しくはMSDNの「正規表現 (Visual Studio)」を参照されたい。ちなみに.NET Frameworkで活用できる正規表現については「スマートな文字列処理のための 正規表現入門」を参照していただきたい。
ワイルドカードとは、「*」(=複数の任意の文字)や「?」(=1つの任意の文字)、「#」(=1つの任意の数字)などの記号を使って、検索する文字列の部分もしくは全体を、任意の文字列として指定する機能だ。例えばワイルドカード「*」を含めた「Pub*」という文字列で検索した場合には、「Pub」だけでなく「Public」や「Publish」もヒットするようになる。
Visual Studioのワイルドカードについて詳しくはMSDNの「ワイルドカード (Visual Studio)」を参照してほしい。
それではまず「フォルダを指定して検索」から説明していこう。
フォルダを指定して検索
「フォルダを指定して検索」機能を利用するには、メニュー・バーから[編集]−[検索と置換]−[フォルダを指定して検索](VS 2005の場合。VS.NETでは[ファイル内の検索]という項目名)を選択するか、ショートカット・キーの[Ctrl]+[Shift]+[F]キーを押せばよい(また、アクセス・キー経由で[Alt]→[F]→[I]キーを押してもよい)。
すると、VS 2005の場合は[検索と置換]ダイアログ(VS.NETの場合は[ファイル内の検索]ダイアログ)が表示されるので、次の画面の手順により検索を実行すればよい。
「フォルダを指定して検索」機能の実行手順(上:VS 2005、下:VS.NET)
Visual Studioで複数ファイルの検索を行っているところ。
(1)検索する文字列を指定する。この例では「Public Class Form1$」と入力している。最後の「$」は正規表現で「行末」を意味する。なお正規表現やワイルドカードを有効にするには(6)を設定しておく必要がある。これを有効にすることで、入力欄の右にある[▲]から正規表現やワイルドカードの記号を選択入力できるようになる。
(2)検索対象とするフォルダを指定する。「;」でつなげることで複数のフォルダを指定することもできる。右にある[...(.)]で対象とするフォルダを選択することができる。何らかのプロジェクトを開いている場合には「現在のプロジェクト」や「ソリューション全体」を、また何らかのファイルを開いている場合には「現在のドキュメント」や「すべての開かれているドキュメント」を検索対象に指定することもできる(これらは右の▼をクリックして選択する)。
(3)検索対象とするファイルの種類(「*.cs」「*.vb」「*.txt」「*.*」などの拡張子)を指定する。
(4)大文字と小文字を区別する場合にチェックを入れる。
(5)単語単位で検索する場合にチェックを入れる。例えばこれにチェックを入れていると「Pub」という文字列で検索した場合には、「Public」という単語はヒットせず、「Pub」という単語しかヒットしなくなる。
(6)[条件]チェック・ボックスにチェックを入れると、「正規表現」や「ワイルドカード」などの条件を選択できるようになる。
(7)検索結果を表示するウィンドウを「検索結果 1 ウィンドウ」(デフォルト)もしくは「検索結果 2 ウィンドウ」から選択する。複数回検索する際に、前回の検索結果を「検索結果 1 ウィンドウ」に残しておきたいときなどで活用できるだろう。
(8)通常、検索結果には、(パス名を含めた)ファイル名と、ヒットした場所の1行が表示されるが、これにチェックを入れるとその1行が表示されなくなる。
(9)[検索]ボタンをクリックすると検索を開始する。
この画面の手順に従って検索を行うと、次のようにして検索結果が表示される。
「フォルダを指定して検索」機能の実行結果(VS 2005の場合)
前掲の画面にあった「検索結果 1 ウィンドウ」(デフォルト)もしくは「検索結果 2 ウィンドウ」は赤い枠で囲まれた部分のタブにより切り替えられる。
検索結果の画面で参照したい行をダブルクリックすると、そのファイルがVisual Studioの適切なエディタによって開かれ、検索された場所が表示される。さらに、[F8]キーを押せば、検索結果の次の行を参照することができる。
フォルダを指定して置換
「フォルダを指定して置換」機能を利用する方法は「フォルダを指定して検索」とほぼ同じなので詳細は割愛し、異なる部分のみを簡単に説明する。
「フォルダを指定して置換」機能を利用するには、メニュー・バーから[編集]−[検索と置換]−[フォルダを指定して置換](VS 2005の場合。VS.NETでは[ファイル内の置換]という項目名)を選択するか、ショートカット・キーの[Ctrl]+[Shift]+[H]キーを押せばよい(また、アクセス・キー経由で[Alt]→[F]→[S]キーを押してもよい)。
置換方法を指定する画面では、次の画面のように[置換後に、変更したファイルを閉じない]というオプションが選択できるようになる。これをチェックしておけば、置換が行われたファイルがVisual Studioのエディタで開かれたままの状態になり、その保存を自らセーブするまで保留できる。
[検索する文字列]で「{〜}」というタグ付き正規表現を指定した個所の内容は、[置換後の文字列]で「\1」「\2」「\3」……という記号により利用(出力)できる。ここで¥マークの後の数字は左側から数えて何番目のタグ付き正規表現かを示しており、例えば[置換後の文字列]で「\1」と書かれたところには、1番目のタグ付き正規表現の内容(上記画面では「{.*}」の内容)が出力される(ちなみに「\0」は検索された文字列全体を出力する)。
つまり、上記画面のように置換設定の内容が
[検索する文字列]:「public class {.*}」
「置換後の文字列」:「public class \1 // 置換しました!」
で、検索対象のファイルに以下のような行が含まれている場合、
public class Form1
public class Form2
これらはそれぞれ、
public class Form1 // 置換しました!
public class Form2 // 置換しました!
のように置換される。
カテゴリ:Visual Studio .NET 処理対象:IDE
カテゴリ:Visual Studio 2005 処理対象:IDE
Copyright© Digital Advantage Corp. All Rights Reserved.