Vim+PHP 関数一覧を表示する関数
ふと思い立ってPHPのクラスメソッドを表示させて、選択することでその場所に飛ぶような仕組みを作ってみた。
map! =f <ESC>:call Gfunc()<CR> map! =fun <ESC>:call Gfunc()<CR> map! =func <ESC>:call Gfunc()<CR> " Grep functions and displaies with cw function! Gfunc() if &filetype=='php' vimgrep /^\s*\(public\|protected\|private\)\=\s*\(static\)\=\s*function\s*(*/ % | cw else if &filetype=='ruby' vimgrep /^\s*def\s\=(*)*/ % | cw elseif &filetype=='vim' vimgrep /function!\= *\(*\)/ % | cw else echo "unknown filetype" endif endfunction
仕組みは簡単で、filetypeで分岐してそれに合った正規表現をvimgrepを使って "%(編集中のファイル)" に対してgrepして、その結果を cw(copen)しているだけ。
使い方は関数を調べたいファイルで
<ESC> : =f <ENTER>
もしくは =fun, =func とするだけ。~/.vimrcにでも貼付けて使ってみてください。
Vimの正規表現は書くのに慣れが必要なのでちょっとした練習にもなりました。お使いの言語に対応した正規表現を書いた方は是非教えてください。僕も他の言語用のものを書いたらこちらに加筆します。
では。