quickrun.vim で Vim script を非同期で実行

やったーこれで出来たよー。

[ソース]

let g:quickrun_config = {
\   "vim/async" : {
\       'command': 'vim',
\       'exec': '%C -N -u NONE -i NONE -V1 -e -s --cmd "source %s" --cmd qall!',
\       "runner" : "vimproc",
\       "hook/output_encode/encoding" : "sjis",
\   },
\}

" 非同期で実行したい Vim script で
" :QuickRun vim/async
" を実行


何をやっているかっていうと現在起動している Vim ではなくて、Vim 上から別の Vim を起動させてその上で Vim script を処理しています。
なので外部コマンドとして Vim script を処理し vimproc で非同期実行を行うことが出来ます。
実際に使用する場合は --cmd オプションで細かい設定とかしてみるといいかと。


あと上記の設定だと Vim の起動時に vimrc を読み込まないのでプラグインに依存するようなコードだと実行できないので注意。
逆にいえばプラグインに依存しないようなコードなんかを実行させる場合に有効かと思います。
特に副作用があるコードだと現在起動している Vim に影響を与えないので Good ですね。


owl.vim のテストコードとかはこの方式で実行してみたいところ。