ファイルタイプ毎に辞書を分ける

こんな感じでどうだろう。

autocmd FileType * set complete=.,w,b,u,t,i
autocmd FileType perl set complete-=i | set complete+=k~/.vim/dict/perl.dict
autocmd FileType ruby set complete+=k~/.vim/dict/ruby.dict
autocmd FileType javascript set complete+=k~/.vim/dict/javascript.dict
autocmd FileType erlang set complete+=k~/.vim/dict/erlang.dict

ファイルを読み込む度に毎回 complete を '.,w,b,u,t,i' で初期化し、その後にファイルタイプ毎の設定を行う。
バッファ毎に complete を保持しているので、一度にタイプの違う複数のファイルを読み込んでも平気。