読者です 読者をやめる 読者になる 読者になる

ctagsを利用するSource Explorer(srcexpl.vim)がすごく便利

vim

最近公開された【Source Explorer】というプラグインが気になって試してみました。
あればわかりやすいかなと思ってAnimationGif載せました。画像が荒くてすいません。

まずは感想から。「これはすごい」絶対にLifeChanging
ポチしました。
更新が活発なので今後も期待できそうです。

機能(できること)

名前からして、vimExplorerとかwinExplorer等のファイラ系と思っていたのですが違いました。
tagsを利用したソースコード閲覧・移動補助機能でした。


【特徴】

  • tagsを利用したビューワ
  • 自動的または手動でtag先を表示
  • QuickFix機能を利用したプレビュー
  • taglistとminibufferExplorerとの併用が効果的
  • マルチプラットホーム(win,mac,unix)
  • tagsファイルの自動生成
  • コンテキストを元に戻る機能

設定

【ダウンロード先】

http://vim.sourceforge.net/scripts/script.php?script_id=2179

【インストールディレクトリ】

~/.vim/plugin/

【vimrcの設定】

  • 自動的にプレビューを表示するかどうか
    • 自動(#vimrcに追加。自動表示するまでの時間)
      • let g:SrcExpl_RefreshTime = 1
    • 手動(#デフォルトでは手動だが明示的に書くなら)
      • let g:SrcExpl_RefreshTime = 0
      • 手動で表示させる時はNormalモードで単語(tag)のでを叩く。
  • tagsをsrcexpl起動時に自動で作成(更新)するかどうか(# vimrcに追加。する場合のみ)
    • let g:SrcExpl_UpdateTags = 1
  • マッピング
    • 手動表示のMAP(#スペースに割当てる場合。)
      • let g:SrcExpl_RefreshMapKey = ""
    • 戻る機能のMAP(#ノーマルモードで動作する)
      • let g:SrcExpl_GoBackMapKey = ""
    • Source Explorerの機能ON/OFF(#普通にvimrcで書く方法と同じ)
      • nmap :SrcExplToggle


次は他のWindow系プラグインとの連携

デフォルトで、taglist.vimとminibufferExplorerには対応しているが、私が使っているbuffer管理のPluginは『tabbar.vim』なので対応させる。

SrcExpl_OtherPluginAdapter関数に下記コードを追加する

" If the Tabbar Plugin existed
if bufname("%") == "-TabBar-"
    " Move the cursor to the window behind.
    " Because I used to put the TabBar
    " Window on the top position.
    silent! wincmd j
endif

これで準備OK、私が追加でvimrcに書いたのは下記コード

"自動でプレビューを表示する。TODO:うざくなってきたら手動にする。またはソースを追う時だけ自動に変更する。
let g:SrcExpl_RefreshTime   = 1
"プレビューウインドウの高さ
let g:SrcExpl_WinHeight     = 9
"tagsは自動で作成する
let g:SrcExpl_UpdateTags    = 1
"マッピング
let g:SrcExpl_RefreshMapKey = "<Space>"
let g:SrcExpl_GoBackMapKey  = "<C-b>"
nmap <F8> :SrcExplToggle<CR>

使い方

ソースをファイルをvimで開きます。

下記コマンドを実行します。

:SrcExplToggle

※tagsを自動的に生成しない場合は、ctagsコマンドで自動的にtagsファイルを生成しておく必要があります。


プレビューウインドウが開きます。


単語の上にカーソルを合わせるとプレビューウインドウにtagsで関連付けられているソースが自動で表示されます。
手動で閲覧する場合は、単語の上で、キー等を押します。

感想

buffer管理ソフトを使っていると、プレビュー先のファイル名がすぐわかるので相乗効果がありますね。
taglistを表示していると、プレビューを表示すると勝手にカーソルが移動してしまうので、オプション設定などが必要かもしれません。

ソースを追うのがこれですごく楽になった気がします。マルチウインドウを効果的に使っている印象でGUIIDEのマルチウインドウ環境にも負けてはいないのかなと思いました。
書くときも余計なジャンプもしなくても済むのでいい感じです。

ctagsをもっと効果的に利用するために、再入門をしたいなぁ。