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にでも貼付けて使ってみてください。

現在のところ、PHPRubyのみ対応。

Vim正規表現は書くのに慣れが必要なのでちょっとした練習にもなりました。お使いの言語に対応した正規表現を書いた方は是非教えてください。僕も他の言語用のものを書いたらこちらに加筆します。


では。