count0.org

tmuxinatorでpaneのレイアウトを指定する

19 August 2013 linux

tmuxを起動して手が勝手にz | z s z(押しつつ) kk z(押しながら) llと打ち、それぞれのpaneでvim, foreman start, なにもしないでbashということをやっています。これは何かというと画像を見るのがてっとり早いです。

tmuxで画面分割

最初のz |は画面を垂直分割。右のpaneがアクティブなのでz sで水平分割。右下のpaneがアクティブになるので、z(押しつつ) kkで右下のpaneの高さを広げ、z(押しつつ) llで左のpaneの横幅を広げるという芸当を無意識に幾度となく実行してきました。その結果が上の画像です。ようやく疑問を抱きました。なにやってんだ、俺。

ググッた結果、teamocilというのものあるのですが、tmuxinatorを使ってみました。tmuxinatorは設定ファイルに定義されたtmuxのpaneやwindowを再現してくれるものです。

  gem install tmuxinator # gemでインストール
  rbenv rehash # rbenv環境なのでコマンドがインストールされたらrehash
  tmuxinator doctor # $EDITORと$SHELLが設定されているか確認してくれる
  tmuxinator new blog # ひな形作成
  vim ~/.tmuxinator/blog.yml # 設定ファイルを編集

ここで困ったのがpaneのレイアウトです。GitHubのページにはthe five standard layoutsを使うか自分で定義すると書いてあります。自分で定義したものを使いたかったのですが、リンク先のstackoverflowのページに書かれているレイアウトの指定がよくわからない。なんとなくわかるようで全くわからない。

どうすればいいかというと、記事の冒頭で行ったようにtmuxで自分のやりたいpaneのレイアウトを作り、tmux list-windowsすると設定ファイルに記述するレイアウトの値が表示されるというものです。ちゃんと英語で書いてありました。その結果、blog.ymlは以下のようになりました。

# ~/.tmuxinator/blog.yml

name: blog
root: ~/Desktop/blog/

windows:
  - main:
      layout: 0e75,178x50,0,0{101x50,0,0,0,76x50,102,0[76x13,102,0,1,76x36,102,14,2]}
      panes:
        - vim
        - foreman start
        - #empty

tmuxinatormuxというaliasが用意されているので、ブログを書きたくなったら

mux start blog

とコマンドを打つだけで、記事の冒頭に書いたようなコマンドをいちいち打たなくても済むようになりました。めでたい。

リンク