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
で閉じることができます
参考リンク
- ctagsを使ってVimでCode Readingを加速する - TIM Labs
- ctagsをちゃんと使う
- Vimでctagsを利用してタグジャンプする | WEBサービス創造記
- Easily switch between source and header file | Vim Tips Wiki | FANDOM powered by Wikia
- vimgrepとQuickfix知らないVimmerはちょっとこっち来い
- ctagsと連携するように環境を構築する
- Vim でタグジャンプを使ってみる - Archiva