ctags コマンドは、プログラムのソースコードから関数・変数・クラスなどのシンボルを抽出して タグファイル を生成するためのツールです。
生成されたタグファイルを使うことで、Vim や Emacs などのエディタでコード内の定義に素早くジャンプできるようになります。
構文(Syntax)
ctags [オプション] [ファイル...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | カレントディレクトリ以下のソースから tags を生成 | ctags |
-R | 再帰的にディレクトリを処理 | ctags -R |
-f <file> | 出力ファイルを指定(デフォルトは tags) | ctags -f mytags |
--languages=<list> | 対象言語を指定 | ctags --languages=C,Python |
--exclude=<pattern> | 除外パターンを指定 | ctags -R --exclude=node_modules |
-a | 既存のタグファイルに追加 | ctags -a newfile.c |
-e | Emacs 形式で出力 | ctags -e |
--list-languages | サポートされている言語一覧を表示 | ctags --list-languages |
--list-kinds=<lang> | 指定言語の解析対象一覧を表示 | ctags --list-kinds=Python |
実行例
デフォルトで tags ファイルを生成
ctags
(カレントディレクトリのソースコードを解析し tags ファイルを作成)
ディレクトリを再帰的に解析
ctags -R
出力ファイルを指定
ctags -R -f project.tags
Python ファイルだけを対象に解析
ctags -R --languages=Python
特定のディレクトリを除外
ctags -R --exclude=node_modules --exclude=dist
既存のタグファイルに追加
ctags -a utils.c
サポートされる言語を確認
ctags --list-languages
エラー例(存在しないファイル)
ctags notfound.c
出力例:
ctags: cannot open "notfound.c" : No such file or directory
関連コマンド
vim::tagやCtrl-]でtagsファイルを利用可能。etags: Emacs 用のタグ生成ツール。cscope: より高度なコード解析・検索ツール。
備考
ctagsには複数の実装があり、代表的なのは Exuberant Ctags と Universal Ctags。- Universal Ctags はアクティブに開発されており、多くの言語をサポート。
- 生成される
tagsファイルをプロジェクトルートに置くと、エディタでコードナビゲーションが容易になる。
参考
- Universal Ctags: https://ctags.io/
- manページ: https://man7.org/linux/man-pages/man1/ctags.1.html

コメント