GNU GLOBAL とは
GNU GLOBAL はとても優れたソースコードタギングシステムです。
http://www.gnu.org/software/global/
http://www.tamacom.com/global-j.html
この、とても優れたソースコードタギングシステムを、とても優れたエディタであるところの Vim で快適に利用する、というお話。
GNU GLOBAL のインストール
まずは、GNU GLOBAL をインストールします。
基本はソースコードからのコンパイルですが、パッケージ管理からインストールすることもできます。
Windows の場合は、公式サイトからバイナリを配布しているとこへのリンクがあるので、そこからダウンロードするのが楽でしょう。
私は Mac なので Homebrew から入れました。
brew install global
詳しく書いてくれているサイトがあるので、参照させてもらうのが一番です。
http://www.machu.jp/diary/20090307.html
http://uguisu.skr.jp/Windows/gtags.html
など。
これより、
- GNU GLOBAL をインストール済みで、
- gtags, global のコマンドの場所にパスが通っていて、
- タグファイルが生成されている。
という状態を前提として進めます。
alt-gtags.vim のインストール
はじめに
GNU GLOBAL は、エディタで使うことを想定し、Vim 上での利用を可能にする gtags.vim というインターフェースのプラグインを提供してくれています。
が、私の環境ではそのプラグインがうまく動かず、ちょこちょこ修正していましたが難しくてよくわからなくなってきたので、alt-gtags.vim というのを用意しました。[PR]
if_pyth
alt-gtags.vim は Python インターフェースが必須なので、--enable-pythoninterp でビルドされている必要があります。
http://vim-users.jp/2010/03/hack132/
インストール
alt-gtags.vim プラグインは github で配布されているので、NeoBundle を使っている場合は、.vimrc に以下を書けば一発です。
NeoBundle '5t111111/alt-gtags.vim'
もしくは、普通にダウンロードして展開してプラグインのパスが通っているところに置けばOKです。
https://github.com/5t111111/alt-gtags.vim
alt-gtags.vim の利用
コマンド
alt-gtags.vim をインストールすると、以下のコマンドが実行可能になります。
-
AltGtags -f
カレントバッファの関数のリストを QuickFix ウィンドウに表示する -
AltGtags
カーソル位置の関数の定義位置を QuickFix ウィンドウに表示する -
AltGtags -r
カーソル位置の関数の参照位置を QuickFix ウィンドウに表示する -
AltGtags -s
カーソル位置のシンボルの参照位置を QuickFix ウィンドウに表示する
実行例
以下が、例として AltGtags -f
を実行した時の画面です。
もちろん、QuickFix ウィンドウから該当の場所にジャンプすることができます。
キーバインドの設定
好きなキーにバインドすればよいと思いますが、私の設定は以下です。
" QuickFix
map <C-n> :cn<CR>
map <C-p> :cp<CR>
" alt-gtags.vim
nnoremap <C-j> :AltGtags<CR>
nnoremap <C-k> :AltGtags -r<CR>
nnoremap <C-l> :AltGtags -s<CR>
[追記] <C-i>を潰すのはさすがにどうかと思ったので修正
追記
zsh と MacVim 環境でエラーが出るときの対処
2012-12-22 追記
AltGtags コマンドの実行時、global および gtags コマンドが見つからずエラーになることがあります。
これは、MacVim (現在 7.4 で確認) と zsh を使っている環境の場合、MacVim 側が正しく PATH を認識できない不具合によるもののようです。
GLOBAL を Homebrew からインストールしていた場合、/usr/local/bin
にコマンドがインストールされているため、コマンドが見つかりません。
回避策として、~/.zprofile
内で PATH を設定してあげるとうまくいきます。
$ cat ~/.zshrc | grep "export PATH" >> ~/.zprofile