Vim6 Part10
レス数が900を超えています。1000を超えると表示できなくなるよ。
0923名無しさん@Vim%Chalice
05/03/03 16:33:46以下のようなものを作ってみました。
例えば、
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
もっと改良するつもりです。
レス数が900を超えています。1000を超えると表示できなくなるよ。