ctags でサクサクコーディング。

kame46CentOS,ctags,PHP,vim

はじめまして、クライゼルチームの kame46 と申します。

僕が所属するチームでは、基本的に PHP を使って開発をしているのですが、今回は、日ごろ開発で使っている便利な小技(?)をご紹介したいと思います。

プログラムの開発時には、特定のクラスや特定のメソッドがどんな実装になっているか?などを直接確認することがよくありますが、それをいちいち検索するのは非常に効率が悪いと思います。
そんなときに、便利なのが今回ご紹介する「ctags」です。

ctags は、ソース内のクラスやメソッドなどを網羅したインデックスファイルを生成するプログラムです。
あらかじめ ctags で、インデックスファイル(tags)を生成しておき、普段使っているエディタで、そのインデックスファイル(tags)を設定することで利用できます。

というわけで、細かい説明は省いて、さっそく使ってみます。
ここでは、CentOS 5 にインストールして使用することを前提としてますが、Windows XP でも利用することができます。

■事前準備
01. 事前にインストールされていないかチェック。
$ rpm -qa | grep ctags

02. バージョンが古い場合は、アンインストールする。(後述)
最新版(現時点では 5.7.1)がインストールされている場合はそのままでOKです。
# yum remove ctags

■インストール
01. Source RPM を所得。
$ wget http://prdownloads.sourceforge.net/ctags/ctags-5.7-1.src.rpm

02. ビルド と インストール。
# rpmbuild --rebuild ctags-5.7-1.src.rpm
# rpm -ivh /usr/src/redhat/RPMS/i386/ctags-5.7-1.i386.rpm

■tags ファイルの作成。
01.インストールが完了したら、さっそく使ってみます。

ソースコードを配置したディレクトリに移動(適当に読み替えて下さい):
$ cd /home/hogehoge/php_src

tags ファイルの生成:
$ ctags -R -n --languages=PHP --PHP-types=c+f+d

上記のコマンド例では、カレントディレクトリ以下全ての PHP ファイルに対して、「クラス」「メソッド」「定数」の定義された位置を、行単位でインデックス化し、カレントディレクトリに tags というファイル名で生成します。

■Vim で tags を利用してみる。
01.tags ファイルのセット。
$ vim hogehoge.php
:set tags=/home/hogehoge/php_src/tags

02.任意のクラスやメソッドのファイルにジャンプしてみる。
任意のクラスやメソッドにカーソルを移動して「Ctrl + ]」。

03.ジャンプ先から元のファイルに戻る。
「Ctrl + t」。

かなりざっくりな説明ですが、こんな感じで利用できます。
上記の説明では、Vim で利用していますが、僕は実際には EmEditor で利用しています。
tags ファイルは CentOS で生成して、使うのはWindowsのエディタという感じです。

Vim や emacs などの Linux で有名なエディタだけでなく、秀丸エディタや、EmEditor 、サクラエディタ などの Windows 用のエディタでも利用できるのが嬉しいですね。

ちなみに、CentOS 5 の yum でインストール可能なバージョン 5.6 で tags ファイルを生成した場合、PHP のクラスメソッドが上手くインデックスされないのでご注意下さい。

kame46CentOS,ctags,PHP,vim

Posted by kame46