Vim のすゝめ 第 13 回

タグジャンプ

Vim の新バージョンのリリースを待ち続けている、Vim 使いの「ブイ」(仮名) です。13 回目のテーマは「タグジャンプ」です。Vim でタグファイルを扱う方法について解説します。

1 Vim と ctags

巨大なソースコードを扱うには関数や定数の定義位置に素早くジャンプする方法が必要となります。IDE だと組み込みでそういった機能を備えている場合が多いですが、Vim の場合はタグファイルというものを用意することでそれが可能となります。

まず、ctags はあらかじめインストールしておきましょう。その上で次のコマンドを実行することにより、カレントディレクトリ以下の定義を抜き出したタグファイルを生成することができます。

$ ctags -R

タグファイルを生成したら、そのディレクトリで Vim を起動してください。Vim はデフォルトでカレントディレクトリにあるタグファイルを読み込むことができます。タグファイルが認識できているかどうかが不安な場合は、:echo tagfiles() でチェックしてみるとよいです。Vim がタグファイルを検索するときに使用するパスは ‘tags’ オプションにより指定することができます。

定義に飛びたい場合は、ノーマルモードで <C-]> を入力します。元に戻るときは <C-t> です。このマッピングは :help のときと同じです。

候補が複数ある場合、:cprevious:cnext コマンドによりジャンプ先を切り替えることができます。

2 Vim と gtags

ctags と同様なタグファイル生成プログラムとして、gtags というのも存在します。gtags は ctags と比較して対応言語は少ないですが、高機能なのと高速なのでよく使用されているようです。

Vim は標準では gtags に対応していませんが、gtags.vim という外部プラグインをインストールすることで対応させることができます。

http://www.vim.org/scripts/script.php?script_id=893

gtags を用いて定義場所を参照するときには、当然ながらタグファイルを生成しておく必要があります。次のコマンドをタグファイルを生成したいディレクトリにて実行します。

gtags

gtags.vim をインストールすると、:Gtags {キーワード} というコマンドが追加されます。これは、引数で与えられたキーワードの定義へジャンプするコマンドです。

:Gtags コマンドは多用するため、任意のキーにマッピングしておくと使い勝手がよくなります。

:Gtags -r {キーワード} とすることで、キーワードが使用されている場所を検索することができます。ちなみに ctags にはこの機能がないため、grep を併用しなければなりません。

:Gtags -f {ファイル名} で、{ファイル名} に定義されている関数の一覧を表示できます。現在開いているファイルの関数一覧を表示したい場合は、:Gtags -f % に簡略化することができます。

ctags のときのようにカーソル位置の単語を検索する場合、:CtagsCursor コマンドを使用します。このコマンドもマッピングしておくとよいでしょう。

gtags.vim を使用している場合、元の位置に戻る場合は <C-o> を使用します。<C-t> はタグジャンプ用のマッピングなので使用できません。

This article is made by Vim.
記事執筆者: v
記事公開日:2016年08月03日