開発者ブログ
OpenPNE 開発者流のソースコードの追い方 #3 – vim + ctags 編
- 2009-03-22 (日)
- 開発者ブログ
開発チームの海老原です。
仕事で疲れた日もソースコードを追えばたちまち元気になりますよね! ということで今回も技術ネタです。
ソースコードを追うための必需品といえばやはりエディタです。
そんなわけで今回はエディタを使ってソースコードを追っていきましょう。
ちなみに僕は開発でもバリバリに Vim を使っているため、ここでは Vim (version 7.2) 前提で解説します。
他のエディタを使われている方は適宜読み替えてください。
■ Ctags を導入する
今回は Ctags を使います。 Ctags はソースコードなどから識別子のタグファイル(インデックスファイル)
を生成するプログラムです。おそらく Unix 系 OS には標準で含まれているはずです。
お使いの環境に入っていない場合は以下のようなコマンドによって入手してください(例は Debian)。
# apt-get install ctags
Ctags には Exuberant Ctags や Etags、 gtags などといった派生版も存在します。
どれを使っても基本は同じですので、お好みのものを選んでください。
Ctags を導入したら、プロジェクトのルートディレクトリで以下のコマンドを実行してください。
$ ctags -R
これで tags というタグファイルが自動的に生成されるはずです。
以下のように指定することでタグファイルの対象を限定することもできます。(これについてはまた後日)
$ ctags –langmap=PHP:.php
■ Vim からタグファイルを読みに行く
Vim にタグファイルの場所を教えます。
$HOME/.vimrc に以下の設定を追記してください。
set tags+=tags
■ いざタグジャンプ!
Vim でソースコードを開き、定義を知りたい識別子にカーソルを合わせ、
Ctrl + ]
をタイプしてください。
これだけで定義元にジャンプすることができます。
これはすごい! 便利! それに速い!
ジャンプ前に戻りたい場合は
Ctrl + t
をタイプしてください。
これさえマスターすれば、巨大なソースコードであっても充分読んでいくことができます。
……とはいえ、 Ctrl + ] は正直言って打ちづらいです。
タグジャンプは頻繁に使っていくものなので、ちょっとこれはなんとかしたいところです。
ということで、海老原は以下の設定を $HOME/.vimrc に書いています。
map t
これで、 t をタイプするだけでタグジャンプできます。もうやみつきです。
■ 識別名を直接指定する
定義を知りたいクラス名などがカーソルを合わせるでもなく分かっている場合、あなたならどうしますか?
ここでソースコード検索をしたり諦めて API リファレンスに逃げたりしてしまう方に朗報です。
おもむろに Vim を開き、以下を入力してください。
:tag 【識別名】
すると、指定した識別子の定義元にジャンプすることができます。
これまた便利です。
さらに、指定する識別子は tab で補完することができます。
op*Form
というような曖昧な指定もばっちりサポート!
■次回は?
ctags で生成することのできるタグファイルについて深く突っ込んでいきます。乞うご期待!
それではみなさん、今日もハッピーなコードリーディングライフをお過ごしください!