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
すると、左がインタプリタで、右がコードを書くウィンドウが表示される。
では右のウィンドウでコードを書いてみよう。
書き上がったら、選択してから次のコマンドを実行。
: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最高♪