Glitch

MySQL, MongoDB, Python, Go

vimproc+quickrunでvirtualenv+pythonz環境のpythonを高速実行


vim環境構築に勤しんでおります(`・ω・´)

色々pluginを入れつつ、python開発環境構築。
参考サイトはここ。
Hashnote -
Vimを最強のPython IDEにする


quickrun


そこでひとつ便利なプラグインがquickrun

thinca/vim-quickrun · GitHub

拡張子より実行するコマンドを自動的に選択し、
\+rというショートカットで起動できるすぐれものです。
pythonのようなスクリプト言語にはもってこい(`・ω・´)


でも一つ欠点が…

このquickrun、通常だとグローバルな環境変数に則った実行ファイルを選んでくるんです。
例えば /usr/bin/python みたいな。

これがvirtualenv使いとしては(´・ω・`)な感じ。
自分の環境はpythonzでCPython2.7.3をインストール、ソレをvirtualenv環境下に紐付けて使ってます。
なので実行ファイルは~/.virtualenv/[virtualenv_name]/bin/pythonだし、
モジュールの参照先は~/.virtualenv/[virtualenv_name]/lib/python2.7以下を見てもらわにゃ困る…


vimproc


そこで今回使用したのがvimproc

Shougo/vimproc · GitHub

なんか、非同期実行とかがメインの使い方?っぽいですね。
今回はそちらより、環境変数の参照先を変更する目的で使ってます。

Vim-users.jp - Hack #168: シェル以外から立ち上げたVimでもシェル側の環境変数PATHを考慮したコマンドの呼び出しを行う

こちらのサイトではバージョン違いのrubyをどう使うか?を話題にしてますが、
virtualenvでもおんなじことです。

インストールにはBundleするだけでなく、dllとかをmakeする手順が要ります。(たいしたことないけど)
使用法は以下のとおり。

:VimProcBang python %
*** python bin ***
~/.virtualenvs/[virtualenv_name]/bin/python                                  
*** python path list ***                                                       
~/currentDir
~/.virtualenvs/[virtualenv_name]/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg
~/.virtualenvs/[virtualenv_name]/lib/python2.7/site-packages/pip-1.1-py2.7.egg
~/dotfiles/vimfiles/bundle/vim-django-support/ftplugin/python/lib
~/.virtualenvs/[virtualenv_name]/lib/python27.zip
~/.virtualenvs/[virtualenv_name]/lib/python2.7
~/.virtualenvs/[virtualenv_name]/lib/python2.7/plat-darwin
~/.virtualenvs/[virtualenv_name]/lib/python2.7/plat-mac
~/.virtualenvs/[virtualenv_name]/lib/python2.7/plat-mac/lib-scriptpackages
~/.virtualenvs/[virtualenv_name]/lib/python2.7/lib-tk
~/.virtualenvs/[virtualenv_name]/lib/python2.7/lib-old
~/.virtualenvs/[virtualenv_name]/lib/python2.7/lib-dynload
~/.pythonz/pythons/CPython-2.7.3/lib/python2.7
~/.pythonz/pythons/CPython-2.7.3/lib/python2.7/plat-darwin
~/.pythonz/pythons/CPython-2.7.3/lib/python2.7/lib-tk
~/.pythonz/pythons/CPython-2.7.3/lib/python2.7/plat-mac
~/.pythonz/pythons/CPython-2.7.3/lib/python2.7/plat-mac/lib-scriptpackages
~/.virtualenvs/[virtualenv_name]/lib/python2.7/site-packages

pythonのパスが.virtualenv下に通ってますね(・∀・)


quickrun + vimproc


んで毎回:VimProcBang python %と打つのはめんどくさいので、~/.vimrcに以下を追記。

let g:quickrun_config = {}
let g:quickrun_config['*'] = {'runner': 'vimproc'}

参考サイトも含め、多くのサイトでは
let g:quickrun_config['*'].runmode = "async:remote:vimproc"} と書いてありますが、なぜか動かず…
とりあえず以上のように設定したらショートカットでうまいことvirtualenv環境になったのでよし(・∀・)


なにかご指摘あればお願いします!
とりあえずvim scriptは勉強せななぁ(・ω・)