ctagsとは、変数でも関数でも、定義している箇所へ素早くジャンプする為に必要な、タグファイルを作成するツールです。
実は、Windowsの定番エディタの一つ『秀丸エディタ』でも、Ver8.40から標準でctagsのタグファイルへの対応がされています。
と言うことで、早速使い方を紹介します。
秀丸エディタからctagsでtagジャンプする方法
まずは、一通りの手順を紹介します。
ctagsのインストール
【exuberant ctags 日本語対応版 5.8J2】
URL:http://hp.vector.co.jp/authors/VA025040/ctags/
上記サイトから”Win32版”のzipファイルをダウンロードして、解凍した中身を任意のフォルダに展開します。
ここでは、例として “C:¥Program Files¥ctags¥” へ展開します。
ctagsのインストールはこれで完了です。
タグファイルの作り方
次にtagジャンプさせたいソースファイルを秀丸エディタで開き、『その他(O)』メニューから『プログラム実行(X)…』を選択して、『プログラム実行』ダイアログを開きます。
コマンドライン(C)にインストールしたフォルダから”ctags.exe”を選択します。
ここでは、例として “C:¥Program Files¥ctags¥ctags.exe”を指定しています。
また、サブフォルダのソースファイルも対象としたい場合は上記の様にコマンドラインオプションとして”-R”を付けます。
『OK』ボタンをクリックすれば、ソースと同じフォルダに”tags“と言う名前のタグファイルが出来ます。
tagジャンプのさせ方
後は、秀丸エディタの編集画面で宣言を知りたい関数や変数にカーソルを置き、『その他(O)』メニューから『ダイレクトタグジャンプ(D)』を選択するか、Ctrl + F10で定義されている位置までジャンプ出来ます。
また、ジャンプ後は『その他(O)』メニューから『バックタグジャンプ(B)』を選択するか、Shift + Ctrl + F10でジャンブする前の位置まで戻ることが出来ます。
上の階層までtagsファイルを探しにいく設定
デフォルトでは、ソースファイルと同じフォルダに”tags”と言う名前のタグファイルがある時しか『ダイレクトタグジャンプ(D)』が機能しません。
なので、上の階層までタグファイルを探しに行く設定をしておきます。
『その他(O)』メニューから『動作環境(E)…』で動作環境ダイアログを開き、左下の『上級者向け設定(A)』にチェックを入れて、『その他のコマンド』→『tagファイル』を選択して、『上の階層もチェックする(R)』にチェックを入れて、『OK』をクリックします。
これで、サブフォルダから上の階層のタグファイルを参照してジャンプ可能となります。
タグファイルを作成するフォルダについて
エディタからctagsを実行させる、『プログラム実行』ダイアログボックスは、通常編集中のソースファイルのフォルダを作業フォルダとして、外部プログラムが実行されます。
もし、編集中のソースファイルより上位のフォルダを指定したい場合は、プログラムの実行ポップアップから『オプション(T)>>』をクリックして、『詳細設定(D)』にチェック、『作業フォルダ』にチェックすると、タグファイルを作りたいフォルダを指定出来るようになります。
上記指定が面倒だと思う場合は、使いたいソース環境の一番上の階層のファイルを開いて、タグファイルを作成するといいでしょう。
また、ctags.exeは単なるコマンドラインのプログラムなのでコマンドプロンプトからタグファイルを作成することも可能です。
その他
タグファイルはソースファイルを元に定義情報のindexとして作られていますので、ソースファイルを編集すると、indexがズレていってしまいます。
その為、編集中の環境で使用する場合や、正しくジャンプ出来なくなった場合などはタグファイルを作り直すようにしましょう。
補足
ctagsの使い方は、以上ですが、少しややこしいかも?と思えるところがありましたので、補足で説明します。
『その他(O)』メニューにある『tagsファイルの作成(G)…』からもtagsファイルが作成できるけど、何が違うの?
実は、秀丸エディタでは秀tagsと言うctagsと同様にタグファイルを作成するコマンドが同梱されていて、それを起動するメニューが『tagsファイルの作成(G)…』になります。
但し、秀tagsは基本的にC言語の関数ジャンプを目的としたツールになっていて、変数や、言語の種類への対応がctagsに比べると非力で、他の統合開発環境のエディタと比べても、使い勝手は決して良いとは言えませんので、ctagsを使うことを強くお勧めします。
『タグジャンプ』と『ダイレクトタグジャンプ』の違いとは?
秀丸エディタでは『タグジャンプ』と『ダイレクトタグジャンプ』の2つの機能があり、それぞれ別ものになりますので注意して下さい。
『タグジャンプ』とは、テキスト上に記載された「ファイル名と行番号」にジャンプする機能で、grep結果のファイル:行にジャンプする時などに利用されます。
『ダイレクトタグジャンプ』とは、ここで紹介しているタグファイルを元に、カーソルの当たっている単語の定義先にジャンプする機能になります。
本稿では混乱を避けるため、タグファイルを使用したオブジェクトの宣言元へのジャンプを、単にジャンプもしくはtagジャンプと記載しています。
まとめ
ctagsは一度使うと、これ無しの環境には戻れないくらい便利なツールです。
Ver8.40から秀丸エディタでも標準で対応されるようになっていたので、使い方について紹介させてもらいました。
最初はタグファイルの作成に少し面倒臭さを感じるかも知れませんが、ソース解析には欠かせないツールですので、是非試して見て下さい。