eclipceみたいなコードアシストを実現しようと思い、まだ不完全ですが
以下のようなものを作ってみました。
例えば、
    value = FileIO::
まで入力し、<C-]>すると、タグファイルから候補をScratchに出力し、
Scratch上でEnterを押すと、
    value = FileIO::open( char , int)
が補填されるというものです。

:imap ^] <ESC>maByE:call MyTag("<C-R>"")<CR>
"入力中の文字をコピーし、それを引数に関数呼び出し。
function! MyTag(tagstr)
    :let tagfile = &tags
    :let @a = system("grep '^".a:tagstr."' ".tagfile)
    "タグファイルから候補を取得
    :normal ^Wnj
    :set buftype=nofile
    :normal "aP
    "バッファを開き、ペースト
    :v/[[:space:]]f[[:space:]]/d
    :silent % !sort
    "関数のみ抽出しソートする
    :silent %s/.*\/\^[[:space:]]*\([^)]\+)\).*\$\/.*/\1/g
    "タグの中身だけ取り出す
    :map <buffer> <CR> ddggPjdG:%s/[\*&]*[[:space:]]*\w\+[[:space:]]*\([,)]\)/\1/g<CR>:%s/^.*[[:space:]]\([A-z0-9_:]\+\)[[:space:]]*(/\1(/g
<CR>:%s/\([(,]\)[[:space:]]*[^[:space:]]\+[[:space:]]*\([^[:space:]]\+\)[[:space:]]*\([,)]\)/\1 \2 \3/g<CR>0y$^Wc`aBPld$
    "いろいろしてますが、関数名と、引数の型のみに整形して、元の場所に貼り付ける
    "mapを作成。
endfunction

もっと改良するつもりです。