質問: 表題の通りvscode環境でC言語のタグジャンプ(参照箇所に飛ぶ)の方法がわからりません。やりたいこととしては、複数のファイルに分割されている場合に、関数定義から参照箇所のリストを表示した上で、参照箇所を開くようなことがしたいです。 emacsを利用していた時はgtagsで行なっていたのですが、vscodeではどういった方法が主流なのでしょうか。 わかる方いらっしゃいましたら、ご教示いただけると助かります。 環境 * Mac OS 10.12.3 Sierra * Visual Studio Code 1.11.2
回答: Windowsでしか確認できないのでWindows 10とVisual Studio Code 1.11.2 の組み合わせで説明します。 C/C++パッケージをインストールした状態で、 フォルダーを開くで、ソースコードのあるフォルダを開きます。 その状態で初めてC/C++ファイルを開くと、統合ターミナルが開いてclang-formatなどの必要なバイナリファイルが自動でダウンロードされます(保存先はパッケージのフォルダ内)。 自前で用意しない場合はパスの設定等は不要ですし、ファイルに更新があれば自動でアップデートもしてくれます。 !フォルダーを開く `#incude <****.h>`の行に波線が出ているので、その行を選択 行番号の左に電球マークが出るので電球マークをクリック `Add include path to settings`が出るのでクリック !Add include path to settings するとワークスペースフォルダ内に`.vscode`フォルダが作成され、`c_cpp_properties.json`ファイルが開くので、`includePath`にヘッダファイルのパスを指定します。 macOSの場合は`"name": "Mac"`があるのでそちらの設定をチェック。 `C:/env/msys64/mingw64/include/*`のようにパスの最後にアスタリスクを付けるとinclude以下のサブフォルダを検索しなくなります。 ワークスペースのルートにあるファイルに関してはsettings.jsonの以下の設定でデフォルトで`includePath`に追加されるように設定されています。 ``` // Controls whether or not ${workspaceRoot} is automatically added to the includePath. "C_Cpp.addWorkspaceRootToIncludePath": true, ``` !c_cpp_properties.json `includePath`に正しいヘッダーの位置を設定したら`#incude <****.h>`の下の波線が消えるので、 右クリックメニューから定義へ移動(F12)または定義をここに表示(Alt+F12)で、該当の箇所を表示できます。 !定義をここに表示 シンボルのリストを出してジャンプは`Ctrl+Shift+o`か、 ツールバーのスコープ名(関数とクラスのみ?)の所をクリックで出来ます。 サイドバーにリスト表示してクリックでジャンプみたいなのは多分出来ないじゃないかと思います。 !ナビゲーション ワークスペース1つに対して`.vscode`の設定1つなので、 別のフォルダを作って作業する時は、毎回そのフォルダ用にこの設定を行う必要があります(多分)。