【Vim】ctagsの自動更新

ctagsを自動更新するコマンドを作ってみた。
といっても、vimからctagsコマンドを叩いてるだけ。
なんて原始的な手法だろうか・・・。

ctagsはプロジェクト単位で管理したいので、
タグファイルはルートディレクトリ直下に設置している。
そのタグファイルを独自コマンドで更新するだけ。

vimrcに以下のように定義している。

function Pome()
    :exe "silent! !ctags -a -R --languages=PHP --langmap=PHP:.php.inc --php-types=c+f+d -f /root/test.tags /root/" | redraw
    :exe "silent! !mv /root/test.tags /root/tags" | redraw
endfunction
command! Pome :call Pome()

ctagsコマンドを実行してからタグファイルをリネームしているだけ。
これでvim上で「:Pome」を実行するとタグファイルが更新されるようになった。
複数のプロジェクトが存在する場合はプロジェクト毎にコマンドを定義すればOK。
コマンド覚えるの面倒だけど・・・。


ちなみに、ルートディレクトリのタグファイルを参照するには
vimrcに以下のように書いておく。

if has('path_extra')
        set tags+=tags;
endif


さらにctagsの定義ジャンプでタブを使って飛ぶ場合は、
以下のように定義する。

nnoremap ,<C-]> :<C-u>tab stj <C-R>=expand('<cword>')<CR><CR>

これでノーマルモードで 「,Ctrl+]」と打てば飛ぶ。

便利になりました。