vimshellが便利過ぎる件

vimshellとは?

vimshellはVimからシェルを起動するVimScript。
ただ起動するだけなら:!コマンドでも足りるけど、こちらは非同期に処理できないので、実行中はVimでコードを書けないとか欠点が多い。
vimshellなら非同期なシェルが使えるし、色分け・補完もきく。
インタプリタを立ち上げれば、コードを書きつつ評価させることもできるよ、Emacsみたいにね!

インストール

http://github.com/Shougo/vimshell からソースをダウンロード。
解凍したファイルを~/.vim以下に保存。

あと同作者さんのvimprocが必要なので
https://github.com/Shougo/vimproc からソースをダウンロード。

こちらは~/.vim以下に保存するだけではダメで、Linuxではコンパイルする必要がある。

Linuxでは、次のコマンドを実行。

make -f make_gcc.mak

コンパイルが通ったら、autoload/にあるファイルやディレクトリを~/.vimのautoloadディ
レクトリにコピーする。たぶん、proc.so・vimproc.vim・vimproc/だけ保存すればいいと思う。

Vimからシェルを起動する

シェルを起動するには、次のコマンドを実行するだけ、簡単。

:VimShell

シェル上では挿入モードでコマンド実行できる。
lsとかcdとか一般的なコマンドは普通に使える。(なんかたまに警告でるけど)

あと、pythonのようなインタプリタはそのままでは起動できないようだ。
実行するには、直接インタプリタを呼ばずiexeをかますせばOK。

iexe python

インタプリタを起動して対話的にコードを評価させる (Emacsみたいに)

単純にシェルを実行するだけなら:VimShellで十分。
でも別ウィンドウで書いたコードをシェルに評価させる場合は、:VimShellInteractiveを使う。
引数に起動したいインタプリタを指定しよう。

:VimShellInteractive python

すると、左がインタプリタで、右がコードを書くウィンドウが表示される。
で挿入モードを抜けて、lで右のウィンドウへ。

では右のウィンドウでコードを書いてみよう。
書き上がったら、選択してから次のコマンドを実行。

:VimShellSendString

すると、左のインタプリタに選択してたコードが渡り評価されるよ。

こんな感じで、ちょこちょこコードを書いては評価してを繰り返すことができる。
ワンライナーで書けないコードを試すには最高だね♪

最後に

毎回コマンドを入力するのは面倒なので、~/.vimrcにショートカットを登録しておくべし。

" ,is: シェルを起動
nnoremap <silent> ,is :VimShell<CR>
" ,ipy: pythonを非同期で起動
nnoremap <silent> ,ipy :VimShellInteractive python<CR>
" ,irb: irbを非同期で起動
nnoremap <silent> ,irb :VimShellInteractive irb<CR>
" ,ss: 非同期で開いたインタプリタに現在の行を評価させる
vmap <silent> ,ss :VimShellSendString<CR>
" 選択中に,ss: 非同期で開いたインタプリタに選択行を評価させる
nnoremap <silent> ,ss <S-v>:VimShellSendString<CR>

いやぁ、もうvimshell最高♪