Vim + tmux + Slimuxでインタラクティブなコーディング


Vim + tmux + pry / R

rubyとRを統合しながら開発しているので、分析時に使っているRStudio的な開発をVimとtmuxでやりたい!と思ったので設定しました。

+ Slimux

今まではjpalardy/vim-slimeを使っていたんですが、RStudioみたいに行単位で送りたいなー、と思って探していたらepeli/slimuxに行き当たりました。(設定次第でvim-slimeでも出来るのかもしれませんが…)

vim-slimeよりもconfigurableな感じで使いやすいです。

#409 - asciinema

NeoBundle 'epeli/slimux'

map <C-c><C-c> :SlimuxREPLSendLine<CR>j
vmap <C-c><C-c> :SlimuxREPLSendSelection<CR>

標準の設定ではmap ...<CR>ですが、僕は最後にjを付けてます。これでCtrl押しながらc連打で各行をtmuxの画面に送れます。RStudioでcmd+enterしてるのと同じ感じですね。 -> 追記:初回設定時に毎回jが効いて鬱陶しいので回避方法募集中です。

v}<C-c><C-c>してやれば複数領域の実行も出来るので良いですね!
体感としてはRStudioで実行するよりも軽量なので気に入りました。

バッファ単位で送り先のtmux panelも変えられるので、僕はtmuxを縦に二分割して片方をpry、もう片方にRを起動してgvimからCtrl+cしながらコーディングしてます。
特にRはデータを直接確認しながら作業をすることが多いので、いちいちRStudioに画面を切り替えることなくvimから全て実行できる環境は快適です。

作者に感謝!
Slimux - tmux Plugin for Vim - Esa-Matti Suuronen

余談

僕はgvimをサブモニタに表示しながら使ってるんですが、
一般的にはtmuxのpanelを分割して使うものなんでしょうか。

何にせよvim, tmux, pryの組み合わせは便利です。
言葉だと余り便利さが伝わりにくいですが、僕は以下の動画を見て「使いたい!」と思いました。
Velvet Pulse » Improve Your Ruby Workflow by Integrating vim/tmux/pry
こっちもいい感じです。
▶ LA Ruby Conf 2013 - Impressive Ruby Productivity with Vim and Tmux by Chris Hunt - YouTube