Vim + ctagsでプログラミングの効率アップ

Vimでプログラムの関数を追うのが大変

 Vimでプログラムを書いていると、関数の参照先とか、ある変数が他にどこで使われているか調べたり等するのが大変です。自作のnyamazuスクリプトで探したりしているのですが、いちいち検索してそのファイルを開いて行番号飛ぶのが効率悪いです。簡単に目的のファイルとか変数とか関数に一発でジャンプしたい。きっとそういう便利なものがあるはずだと思って探したらctagsというものがあるそうなので、設定してみました。Mac/Linux(Ubuntu, Raspberry Pi)の両方で動作しました。

ctagsインストール方法

Linux(debian)

 UbuntuでもRaspberry Piでも下記でOK

sudo apt-get update
sudo apt-get install exuberant-ctags

Mac

 Homebrewで一発。

brew install ctags

 Homebrewを知らない人は、下記記事を参照ください。

ctags使い方

tagsファイル書き出し

 ctagsはあらかじめプログラムの関数の情報をtagsというファイルに書き出さないといけない仕組みです。なので、プロジェクトのトップディレクトリに移動して、下記コマンド実行して下さい。

$ ctags -R --extra=+f

-Rは再帰オプション、--extra=+fはファイルをタグに含めるオプションです。 ファイルは拡張子を元に自動判別してくれますが、一般的でない拡張子使っている場合は--langmapというオプションを使ってください。例えば、--langmap=HTML:+.launchみたいにすると、.launchという拡張子のファイルをHTMLとして扱います。

 Vimの設定ファイル(.vimrc)には以下加えておくとより便利かもしれません

" tagsジャンプの時に複数ある時は一覧表示                                        
nnoremap <C-]> g<C-]> 

 ctagsはプログラムを修正したら、定期的に実行する必要があるので注意ください。自動化するような設定もありますが、私はそこまではせず、ときどき自分で手動でやるようにしています。

実施例

 とりあえず以下くらいを覚えていれば便利さの片鱗は感じられるかと思います。

  • tagsファイルがあるディレクトリでVimを起動

  • Vimのノーマルモードで:tag <filename>を実行すると一気に目的のファイルが開けます。便利。ファイル名はTab補完がききます。この機能を使用するにはctag--extra=+fオプションが必要です。

  • 定義したクラスや関数名の上でCtrl+]で、クラスや関数の定義元に移動。便利

  • 前の場所に戻る時はCtrl+t

  • C-w} でプレビューウィンドウを開く。プレビューウィンドウは C-w C-z もしくは :pc で閉じることができます

参考リンク

関連記事