なんか急に nginx と仲良くなりたい気持ちになってきた
— Koichi Tanaka (@tanaka51) 2014, 9月 5
ので nginx のソースコードを読むために Vim で環境を整えたのでメモ。
と言っても特別な事をしたのではなくて、ctags を vim でどう使うか、という話。環境は Mac。
(普段仕事では Rails で開発していて tpope/vim-rails を使ってたり hibariya/reditor を使ってて、 ctags が欲しいと思う事があまりなかった)
用意する
- ctags
- vim-ctrlp-tjump
ctags
いろんなサイトで解説されてるけど、Homebrew で入れた Exuberant Ctags を使うと Ruby とかでも使えて便利らしい。
インストールしたらコマンド一発叩くだけ。
ctags -R
make 後に生成した方が、環境ごとの定数とかが含まれて良い感じ。
git hook に仕込む(ついでに)
nginx は mercurial なので関係ないけど、ついでなので git の hook を仕込んでおく。
ここを参考にした: ctags - gitのhookでtags作成 - Qiita
mercurial の使いかた、覚えた方が良いのだろうか
vim-ctrlp-tjump
前回の記事で ctrlp を入れていたのだけど、このインターフェースで tagjump できるように、以下の拡張を入れた。
nnoremap <c-]> :CtrlPtjump<CR>
vnoremap <c-]> :CtrlPtjumpVisual<CR>
let g:ctrlp_tjump_only_silent = 1
Unix/Windows 両対応の C のプロジェクトってコンパイルオプションで関数を切り分けると思うけど(少なくとも nginx はそうだった)、
知らない関数に出くわして ctrl-]
して、タグ一覧が出た時に src/unix/xxx
src/windows/xxx
と出ると「あーこれは互換性のために分岐してあるコードだ」というのが一発で分かって嬉しい。
一番下の設定を入れておくと、定義が一つだけの時は選択ウィンドウ(?)が出ないですぐに飛ぶので便利。