Visual Studio で C++ コード間を移動する

Visual Studio には、すばやく効率的にコードベースを移動するために使える一連のツールが用意されています。

インクルード ファイルを開く

#include ディレクティブを右クリックして、[ドキュメントに移動] を選択します。 または、その行の上にカーソルを置いた状態で F12 キーを選択し、ファイルを開きます。

一部のインクルード ステートメントのコンテキストでの C++ の [ドキュメントへ移動] メニュー オプションのスクリーンショット。

ヘッダーの切り替え/コード ファイル

ヘッダー ファイルとその対応するソース ファイルを切り替えることができます。 ファイル内の任意の場所を右クリックして、[ヘッダーの切り替え/コード ファイル] を選択します。 または、Ctrl + K キー、Ctrl + O キーを選択できます。

定義 / 宣言へ移動

エディター内で右クリックして [定義へ移動] を選択するか、F12 キーを選択することで、コード要素の定義に移動できます。 同様に、右クリックしてコンテキスト メニューを開くか Ctrl + F12 キーを選択することで、宣言に移動できます。

コード要素を右クリックしたときに表示されるオプションのスクリーンショット。[定義へ移動]、[定義をここに表示]、[宣言へ移動] が含まれます。

[移動]

[移動] では、指定するフィルターに基づいて、それぞれが特定の結果を提供する、移動機能のセットを参照します。

Ctrl + , キーで [移動] を開くことができます。 このアクションにより、編集中のドキュメントの上に検索ボックスが作成されます。

[移動] を開いたときに表示される検索ボックスのスクリーンショット。検索語句を入力するためのテキスト ボックス、型のフィルター、最近使ったファイルなどがあります。

[移動] には次の検索フィルターが含まれています。

  • [指定行へ移動] (Ctrl + G):現在のドキュメントの別の行にすばやくジャンプします。
  • [すべてに移動] (Ctrl + , ) または (Ctrl + T):検索結果には、以下のすべてが含まれます。
  • [ファイルに移動する] (Ctrl 1, F):ソリューション内のファイルを検索します。
  • [型に移動] (Ctrl 1, T):検索結果には以下が含まれます。
    • クラス、構造体、列挙型。
    • インターフェイスとデリゲート (マネージド コードのみ)。
  • [メンバーに移動する] (Ctrl 1, M):検索結果には以下が含まれます。
    • グローバル変数とグローバル関数。
    • クラスのメンバー変数とメンバー関数。
    • 定数。
    • 列挙型項目。
    • プロパティとイベント。
  • [シンボルに移動] (Ctrl 1, S):検索結果には以下が含まれます。
    • [型に移動] と [メンバーに移動する] からの結果。
    • マクロを含む、残りのすべての C++ 言語コンストラクト。

Ctrl + キーで最初に [移動] を呼び出したとき、[すべてに移動] がアクティブ化されます (検索結果はフィルター処理されません)。 その後、検索ボックスの近くにあるボタンを使って必要なフィルターを選択できます。 その対応するキーボード ショートカットを使用して特定のフィルターを呼び出すことができます。 そうすると、そのフィルターがあらかじめ選択された状態で [移動] 検索ボックスが開かれます。 すべてのキーボード ショートカットを構成できます。

テキスト フィルターを適用するには、フィルターの対応する文字の後にスペースを続けて検索クエリを開始します。 ( [行へ移動] ではオプションでスペースを省略できます。)次のテキスト フィルターを使用できます。

  • [すべてに移動]: (テキスト フィルターなし)
  • [行番号に移動]: :
  • [ファイルに移動する]: f
  • [型に移動]: t
  • [メンバーに移動する]: m
  • [シンボルに移動]: #

"f" フィルターを使うことによる [ファイルに移動する] 操作の結果を、次の例に示します。

[ファイルに移動する] の結果のスクリーンショット。ユーザーが「f str」と入力すると、名前に str が含まれている string_utils.cpp と string_utils.h が表示されます。

テキスト フィルターの一覧を表示するには、「?」に 続けてスペースを入力します。 [編集] メニューで [移動] コマンドにアクセスすることもできます。 これはメインの [移動] キーボード ショートカットを思い出すためのもう一つの方法です。

[移動] メニューのスクリーンショット。このメニューには、[行へ移動] (Ctrl + G)、[ファイルに移動する] (Ctrl + 1、Ctrl + F) などのオプションがあります。

[検索] または [フォルダーを指定して検索]

[検索] (Ctrl + F) または [フォルダーを指定して検索] (Ctrl + Shift + F) を使うと、ソリューション内のあらゆる内容に対してテキスト検索を実行できます。

[検索] では、選択範囲、現在のドキュメント、開いているすべてのドキュメント、現在のプロジェクト、またはソリューション全体を対象にすることができます。 正規表現およびプレーンテキストを使用できます。 また、IDE ですべての一致も自動的に強調表示されます。

[検索] ダイアログのスクリーンショット。ユーザーが「channel」を検索しました。ファイル内の黄色の強調表示は、channel が見つかったすべての場所を示しています。

[フォルダーを指定して検索] は、[検索結果] ウィンドウで結果を表示する、より強力なバージョンの [検索] です。 外部コードの依存関係を検索したり、ファイルの種類でフィルター処理したりすることができます。

[検索と置換] ダイアログのスクリーンショット。[フォルダーを指定して検索] ページが選択されています。[大文字と小文字を区別する]、[単語単位] などのオプションが表示されています。

2 つのウィンドウで [フォルダーを指定して検索] の結果を整理できます。 複数回の検索からの結果を一緒に追加できます。 結果を選択してファイル内のその場所に移動します。

検索文字列と一致するテキストを含むファイルと、各一致の抜粋が一覧表示された [フォルダーを指定して検索] の検索結果のスクリーンショット。

詳細については、Visual Studio ドキュメントの「[フォルダーを指定して検索]」を参照してください。

[すべての参照の検索]

コードベース内におけるあるシンボルの使用状況をすべて検索するには、そのシンボル内または直後にキャレットを配置し、右クリックして、[すべての参照の検索] を選びます。 多くのさまざまな方法で、結果をフィルター処理、並べ替え、またはグループ化を行うことができます。 結果は増分で作成されます。 システム ヘッダーやその他のライブラリとは対照的に、それらは読み取りまたは書き込みとして分類され、ソリューションの内容を確認しやすくなります。

[すべての参照の検索] の結果のスクリーンショット。シンボルが見つかった行、シンボルが配置されているファイルとプロジェクトなどが表示されています。

次のカテゴリで結果をグループ化できます。

  • プロジェクト、その次に定義
  • 定義のみ
  • 定義、その次にプロジェクト
  • 定義、その次にパス
  • 定義、プロジェクト、その次にパス

結果のフィルター処理

結果をフィルター処理するには、列の上にマウス カーソルを移動して、ポップアップ表示されるフィルター アイコンを選択します。 先頭の列で結果をフィルター処理して、表示する必要がない文字列やコメント参照などを非表示にすることができます。

フィルターオプションのスクリーンショット。[確認済み]、[確認取り消し]、[コメント内]、[未処理] が含まれます。それぞれに、そのカテゴリに該当する結果の数が表示されます。

  • 確認済みの結果:検索されているシンボルへの実際のコードの参照。 たとえば、Size というメンバー関数を検索すると、Size を定義しているクラスのスコープに一致する Size への参照がすべて返されます。

  • 確認取り消しの結果:このフィルターを使うと、検索中のシンボルに対して名前は一致するが、実際の参照ではないシンボルが表示されます。そのため、これは既定ではオフになっています。 たとえば、それぞれが Size というメンバー関数を定義するクラスが 2 つあり、Class1 のオブジェクトから参照で Size を検索を実行する場合、Class2 から Size への任意の参照は確認取り消しとして表示されます。

  • 未処理の結果: [すべての参照の検索] 操作は、より大きいコードベースを完了するには時間かかかる場合があるため、結果リストには "未処理" の結果が表示されます。 未処理の結果は、検索中のシンボルの名前に一致しますが、まだ実際のコード参照として確認されていません。 このフィルターをオンにして、結果をすばやく取得できます。 一部の結果は実際の参照ではない可能性があります。

結果の並べ替え

任意の列を選択することで、その列で結果を並べ替えることができます。 もう一度列を選択すると、昇順または降順を切り替えることができます。

エディター ウィンドウの上にあるナビゲーション バーを使用することで、ファイル内の型の定義や型のメンバーに移動できます。

エディター ウィンドウの上にあるナビゲーション バーのスクリーンショット。cryptlib > ChannelSwitch > ChannelMessageSeriesEnd() と表示されています。

関連項目