gtags / global†
- タグシステムの一つ
- debian では、 global パッケージに入っている
tag の生成†
$ gtags [options] [path]
$ gtags -f <files>
$ gtags -v
- gtags には、etags と違って append mode が存在しないため、xargs でマルチスレッド化して実行するのは不可かもしれない。
- -f <file> を指定しない場合、gtags はカレント以下のディレクトリを走査してタグ情報を生成する。
- tag の生成処理が終わると、実行したディレクトリ配下に、下記4つのファイルが作られる:
GPATH GTAGS GRTAGS
file | description |
GTAGS | シンボル定義のデータベース |
GRTAGS | シンボル参照のデータベース |
GPATH | ソースファイルへのパスのデータベース |
emacs の設定†
- gtags.el を入手する
- gtags.el のデフォルトのキーバインド
binding | command | description |
C-c t | gtags-find-tag | 関数の定義元へ移動 |
C-c r | gtags-find-rtag | 関数の参照元へ移動 |
C-c s | gtags-find-symbol | 変数の定義元と参照元へ移動 |
C-c p | gtags-find-file | タグで解析されているファイルへ移動 |
C-t | gtags-pop-stack | 移動前の場所に戻る |
vi での設定†
- vimのプラグインを ~/.vim/plugin にコピー
$ mkdir ${HOME}/.vim/plugin
$ cp /usr/share/doc/global/examples/gtags.vim.gz ${HOME}/.vim/plugin
$ cd ${HOME}/.vim/plugin
$ gunzip gtags.vim.gz
/.vimrc にgtagsの設定を追加
map <C-h> :Gtags -f %<CR>
map <C-j> :GtagsCursor<CR>
map <C-n> :cn<CR>
map <C-p> :cp<CR>
binding | description |
C-h | そのソースの関数を表示 |
C-n | リストのカーソルを下に移動 |
C-p | リストのカーソルを上に移動 |
C-j | 現在の関数の中にジャンプ |
C-o | ジャンプする前の位置に戻る |
参考リンク†