Vim で選択した範囲を :source したい

この記事は Vim Advent Calendar 2012 300日目の記事になります。
おかけさまでついに300回目になりました。
なんとか10月までは続ける事ができそうなのでもう少しがんばりたいですねぇ。


さて、記念すべき300回目なのですが、最近 vim-jp の issues で以下のような提案が投げられました。


この提案が結構よさげで、例えば巨大な vimrc を編集している時に一部だけ :source したいような事が稀によくあります。
そんな時に実行させたい Vim script の範囲を選択して :source する事ができます。
巨大な vimrc だと実行が遅い場合があるので特定の範囲のみ :source する事ができるのはよさそうですね。
また、無名バッファに書いた Vim script なんかも実行させる事ができるようになるかもしれません。
今後どうなるか気になりますね。

[現状でもやりたい]

さて、そういう提案がなされていますが、今すぐ同等の機能を使用したいですね。
そんな時は quickrun.vim で代替する事ができます。


:QuickRun は [range] に対応しているので範囲を選択して、:'<,'>QuickRun を行えばその範囲のみを実行します。
quickrun.vim 便利すぎる。
もちろん、無名バッファで :QuickRun すればそのバッファに書かれた Vim script が実行されます。

[注意]

このように quickrun.vim で同等の機能を実現する事が出来ました。
しかし、実行する Vim script にスクリプトローカル変数・関数が含まれている場合、注意が必要です。
quickrun.vim の場合、指定した範囲を一度テンポラリファイルに書きだしてから :source を行っている為、スクリプトローカル関数などは実行したスクリプトファイルでは定義されません。
もし、:[range]sourceVim 本体で実装された場合、元のスクリプトファイルで定義されるとよさそうですね。