Vim と ctags で Scala の関数一覧を tagbar を使って表示する
ctags を使ってタグファイルを作成すると、
定義<->利用箇所とジャンプできて便利ですよね。
↓こんなことがやりたい。
これを Scala を Vim で書いている状況でやりたいと思います。
まずは ctags の設定
ctags そのままでは Scala の書き方がわかりませんので、
~/.ctags
に正規表現で Scala の表記パターンを追加します。
もし上記ファイルがない場合はファイルを作成して内容を追加してください。
この方の gist で内容はほぼ OK なはずです。
ctags file ― Gist : https://gist.github.com/1277336
Scala の場合、定義パターンの前に lazy など色々つくので上の gist では用意してありますが
不要なものもありますので気になる方は修正してください。
なお、 ctags は新しいもの(-R の使えるもの・Exuberant Ctags)を使ってくださいね。
特に Mac に最初から入っている ctags は古いので注意です。
これで ctags が Scala 用のタグファイルを作ってくれるようになりましたので、
試しに scalaz のタグを作ってみましょう。
cd hogehoge/scalaz/ ctags -R .
きちんとタグファイルができた場合、
コマンドを実行したディレクトリに tags という名前のファイルができています。
tagbar
以上の作業で Vim を利用して Scala のソースを開くとタグジャンプなどの機能を使えますが、
どうせならタグ(パッケージやクラス、メソッド)の一覧を表示したいものです。
Scala 以外にもタグ一覧表示に taglist.vim を少しいじって使っていましたが、
tagbar に入れなおしてみました。
majutsushi/tagbar - GitHub : https://github.com/majutsushi/tagbar
tagbar 標準では Scala のタグに対応していませんので Scala 用の設定を追加します。
こちらの説明にあるように、
Support for additional filetypes - GitHub :
https://github.com/majutsushi/tagbar/wiki/Support-for-additional-filetypes
.vimrc へ Scala 用の設定を追加します。
ctags の場所を明示的に指定するには
let g:tagbar_ctags_bin = '/usr/local/bin/ctags'
としてやります。
Mac と Win で ctags の場所が異なる場合、
if has("mac") let g:tagbar_ctags_bin = '/hogehoge/ctags' endif if has("win32") let g:tagbar_ctags_bin = 'C:\hogehoge\ctags.exe' endif
のように切り分けると良いでしょうか。