VS Codeのエージェントモードを拡張するには、を試してください!

C++ コードの編集とナビゲーション

この記事では、C/C++ 拡張機能に特有のコード編集およびナビゲーション機能の概要を説明します。Visual Studio Code での一般的な編集とナビゲーションの詳細については、基本編集コードナビゲーションを参照してください。

C++ コードの編集

C/C++ 拡張機能によって提供されるソースコード編集機能は、コードベースの編集、フォーマット、および理解のための強力なツールです。

ヘッダーファイルの特定

最高の編集エクスペリエンスを提供するために、C++ 拡張機能はコード内で参照されている各ヘッダーファイルを見つける場所を知る必要があります。デフォルトでは、拡張機能は現在のソースディレクトリ、そのサブディレクトリ、および一部のプラットフォーム固有の場所を検索します。参照されたヘッダーファイルが見つからない場合、#include ディレクティブの下に赤い波線が表示されます。

追加のインクルードディレクトリを指定するには、

  1. 参照のない #include パスを選択します。
  2. 表示される電球アイコンを選択し、"includePath" の設定を編集 を選択します。これにより、C/C++ 拡張機能の設定エディターが開きます。
  3. インクルードパスセクションで、追加のインクルードディレクトリのパスを指定できます。

Process of adding a new header to the include path

メンバーの一覧表示

メンバーアクセスシンボル (. または ->) を入力すると、エディターにメンバーのリストが表示されます。文字を入力するにつれて、リストはリアルタイムでフィルタリングされます。

List members

コードのフォーマット

Visual Studio Code の C/C++ 拡張機能は、clang-format と vc_format を使用したソースコードのフォーマットをサポートしています。これらのフォーマットオプションは両方とも拡張機能に含まれており、clang-format がデフォルトです。

ファイル全体をフォーマットするには、右クリックのコンテキストメニューからドキュメントのフォーマット (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) を使用するか、現在の選択範囲のみをフォーマットするには選択範囲のフォーマット (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F)) を使用します。また、入力、保存、貼り付けなどのユーザー操作に基づいてフォーマットをトリガーすることも、次の設定で可能です。

  • editor.formatOnSave - ファイルを保存するときにフォーマットします。
  • editor.formatOnType - 入力中にフォーマットします (; 文字でトリガー)。

フォーマットの詳細については、フォーマットを参照してください。

Clang-format

デフォルトでは、clang-format のスタイルは file に設定されています。これは、ワークスペースに .clang-format ファイルが見つかった場合、そのファイルで指定された設定がフォーマットの基準として使用されることを意味します。それ以外の場合、フォーマットは C_Cpp.clang_format_fallbackStyle 設定で指定されたデフォルトスタイルに基づきます。

現在、デフォルトのフォーマットスタイルは Visual Studio であり、Visual Studio のデフォルトコードフォーマッタを近似したものです。これは以下の設定を意味します。

UseTab: (VS Code current setting)
IndentWidth: (VS Code current setting)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 0

拡張機能に同梱されているものとは異なるバージョンの clang-format を使用するには、C_Cpp.clang_format_path 設定を clang-format バイナリがインストールされているパスに変更します。

たとえば、Windows プラットフォームでは、次のようにします。

  "C_Cpp.clang_format_path": "C:\\Program Files (x86)\\LLVM\\bin\\clang-format.exe"

vc_format

デフォルトでは、フォーマット対象のコードの近くに関連する設定を持つ .editorconfig ファイルが識別された場合、clang-format の代わりに Visual C++ フォーマットエンジンが使用されます。それ以外の場合は、C_Cpp.formatting 設定に移動し、Visual C++ フォーマットエンジンを使用するために vc_format に設定します。

強化されたセマンティックカラー化

IntelliSense が有効な場合、Visual Studio Code の C/C++ 拡張機能はセマンティックカラー化をサポートします。クラス、関数、変数などの色設定の詳細については、強化されたカラー化を参照してください。IntelliSense の設定方法の詳細については、IntelliSense の設定を参照してください。

クイック情報

シンボルにカーソルを合わせると、その定義のインラインビューが表示されます。

Quick info

Doxygen コメント

Doxygen はソースコードからドキュメントを生成するツールです。コードにコメントで注釈を付けると、Doxygen はこれらの関数のドキュメントを生成します。Doxygen コメントを生成するには、/** と入力して Enter を押すと、Doxygen コメントブロックが生成されます。サポートされている Doxygen タグには、@brief, @tparam, @param, @return, @exception, @deprecated, @note, @attention, および @pre が含まれます。

Markdown コメント

デフォルトでは、C++ 拡張機能はエディター内で Markdown のサブセットの表示をサポートしています。このサブセットは、_* のシンボルを除くすべての Markdown コメントをサポートします。新しい Markdown in Comments 設定を切り替えることで、すべての Markdown を有効にするか、このサブセットを維持するか、または Markdown サポートを無効にすることができます。

ソースコードのナビゲーション

ソースコードのナビゲーション機能は、コードベースの理解を深めるのに役立ちます。これにより、コード内のシンボルをすばやく検索したり、その定義に移動したり、参照を見つけたりすることができます。

ナビゲーションは、シンボル情報のローカルデータベースに保存されたタグのセットによって機能します。C++ ソースコードファイルを含むフォルダーが開かれるたびに、C/C++ 拡張機能はそれらのファイルで定義されたシンボルのデータベースを作成します。このデータベースは、ファイルが変更されるたびに更新されます。ドキュメントが保存されずに閉じられた場合、データベースは最後に保存された状態に更新されます。

シンボルの検索

現在のファイルまたはワークスペース内のシンボルを検索して、コードをより迅速にナビゲートできます。

現在のファイル内のシンボルを検索するには、⇧⌘O (Windows, Linux Ctrl+Shift+O) を押し、探しているシンボルの名前を入力します。入力するにつれて、候補の一覧が表示され、フィルタリングされます。一覧から一致するものを選択して、そのシンボルの場所に移動します。

Searching the current file

現在のワークスペース内のシンボルを検索するには、⌘T (Windows, Linux Ctrl+T) を押し、シンボルの名前を入力します。候補の一覧が表示されます。選択した一致がまだ開かれていないファイルにある場合、その場所に移動する前にファイルが開かれます。

Searching in your workspace

これらのコマンドは、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) からもアクセスしてシンボルを検索できます。クイックオープン (⌘P (Windows, Linux Ctrl+P)) を使用し、@ コマンドを入力して現在のファイルを検索するか、# コマンドを入力して現在のワークスペースを検索します。⇧⌘O (Windows, Linux Ctrl+Shift+O)⌘T (Windows, Linux Ctrl+T) は、それぞれ @# コマンドのショートカットです。

呼び出し階層

呼び出し階層ビューには、関数への、または関数からのすべての呼び出しが表示されます。これにより、ソースコード内の関数間の複雑な呼び出し関係を理解できます。

呼び出し階層を表示するには、関数を選択し、右クリックしてコンテキストメニューを表示し、呼び出し階層の表示を選択します。キーボードショートカット (Windows では Shift+Alt+H) を使用するか、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を呼び出して呼び出し: 呼び出し階層の表示コマンドを実行することもできます。これにより、サイドバーの呼び出しツリーに、選択した関数によって呼び出されるすべての関数が設定されます。

Selecting call hierarchy and showing calls in sidebar

サイドバーメニューの電話アイコンを切り替えることで、着信呼び出しに切り替えることができます。着信呼び出しは、関数が別の関数によって参照されるたびに表示されます。また、呼び出しツリーに既に表示されている関数を選択し、その関数を右クリックして利用可能なコマンドを表示することで、ネストされた呼び出しを探索することもできます。

Nested Calls for Call Hierarchy

ピーク

Peek 機能は、ピークウィンドウ内に数行のコードを表示するため、現在の場所から移動する必要がありません。現在のコードから離れることなく、シンボルのコンテキストをすばやく理解するのに便利です。

ピークウィンドウを開くには、右クリックしてコンテキストメニューに移動し、Peek (ピーク) を選択します。そこから、シンボルの定義、宣言、型定義、または参照をピーク表示することを選択できます。

Peek definition

ピークウィンドウが開いている状態で、表示された結果のリストを参照して、関心のあるものを見つけます。これらの結果のいずれかの場所に移動したい場合は、結果を選択するか、ピークウィンドウの左側に表示されているソースコードをダブルクリックします。

定義へ移動

定義へ移動機能を使用して、ソースコード内でシンボルが定義されている場所にすばやく移動します。ソースコード内のシンボルを選択し、F12 を押すか、右クリックしてコンテキストメニューから定義へ移動を選択します。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。それ以外の場合は、競合する定義が前のセクションで説明したようにピークウィンドウに表示されます。

選択したシンボルの定義が見つからない場合、C/C++ 拡張機能は自動的にシンボルの宣言を検索します。

宣言へ移動

宣言へ移動機能を使用して、ソースコード内でシンボルが宣言されている場所に移動します。この機能は定義へ移動と同じように機能しますが、宣言に対してです。ソースコード内のシンボルを選択し、右クリックしてコンテキストメニューから宣言へ移動を選択します。これにより、シンボルの宣言の場所に移動します。

参照へ移動

参照へ移動機能を使用して、シンボルがソースコード内でどれくらいの頻度で、どこで参照されているかを理解します。ソースコード内のシンボルを選択し、⇧F12 (Windows, Linux Shift+F12) を押すか、右クリックしてコンテキストメニューから参照へ移動を選択します。参照が見つかった場合、それらはピークウィンドウに表示されます。

型定義へ移動

型定義へ移動機能を使用して、ソースコード内で型が定義されている場所にジャンプします。ソースコード内の型を選択し、右クリックしてコンテキストメニューを開き、型定義へ移動を選択します。

次のステップ

さらに読む

他に質問がある場合や問題が発生した場合は、GitHub で issue を報告してください。問題を診断するために、拡張機能からのログ情報の提供を求められることがあります。拡張機能のログを提供する方法については、C/C++ 拡張機能のログ記録を参照してください。