Tagbarでどの関数内に居るかを知る
背景
vimのscreen.c
を読んだ(見た)ことがあるでしょうか?
- 計10701行
- foldline関数 約1600行
- その他の関数 お察し。
はっきり言って、タグジャンプした時点で即迷子です。
なので、「いまどの関数の中にいるか」がわかるなにかが欲しい
そこで見つけたTagbar
Tagbarって?
vimのプラグインです。
どんなプラグインかは、紹介しているサイトがたくさんあるので省略。
どの関数の中にいるかわかるの?
このプラグインの:TagbarShowTag
というコマンドを叩けば、
こんな↓感じにハイライトして教えてくれます。
インストール・設定
.vimrc
に追加
Neobundle 'majutsushi/tagbar' " Neobundleでインストール " tagbar の設定 let g:tagbar_width = 30 " 初期設定はwidth=40なのでちょっと幅とりすぎ。 let g:tagbar_autoshowtag = 1 ":TagbarShowTag を叩かなくても有効にする
しかし、ちょっと難あり
完璧だ!と思ったんですが、いかんせん遅い & 関数限定ではない
- 遅い:カーソルをおいてから数秒キー操作をやめないと更新されない。
- 関数限定でない:関数の中でDEFINEマクロが書かれてるとそっちに反応してしまう。
対処法
ステータスラインに現在いる場所のタグを表示するというtipsがhelpにありました。
.vimrc
にステータスラインの設定を書き加えるだけでOK
" ステータスラインの参考 %{tagbar#currenttag('[%s]','')} がタグを表示している部分 set statusline=%F%m%r%h%w\%=%{tagbar#currenttag('[%s]','')}\[Pos=%v,%l]\[Len=%L]