この記事は Vim 8.0 Advent Calendar の 3 日目の記事です。 ジョブ機能を使うことで、外部プロセスを非同期で実行することができます。 ジョブを使う この例では、ジョブを使って外部コマンド git grep -n word を実行し、結果を 1 行ずつ非同期で処理し、quickfix に追加しています。 function! s:handler(ch, msg) abort caddexpr a:msg cwindow endfunction call setqflist([]) let s:job = job_start( \ ['git', 'grep', '-n', 'word'], \ {'out_cb': function('s:handler')}) このように、ジョブを使うことで外部プロセスをバックグラウンドで実行し、チャンネルとコールバック関数を使うこと