あざらし備忘録。

渋谷ではたらく音ゲー大好きウェッブエンジニアがいろいろ思った事やった事を書いていくブログです

tmuxinatorで快適なtmux生活を![tmux][tmuxinator][Ruby]

以前からものは知っていて気になってはいたのですがやっと使えてとても便利だったのでまとめようと思います。

なお、tmuxに関しては今回の記事としてはおいておくこととします。 使ったことが無い方は是非使ってみてください!便利です。

tmuxinatorとは

tmuxinator/tmuxinator · GitHub

tmuxinatorは、簡単にいうと「好きなtmuxの画面構成をいつでも瞬時に構築できるようにする」ツールです。

これさえあればいつでもすぐに自分にとって最適な画面分割にできますし、加えてコマンドの実行までできます!素晴らしいです。

早速導入してみましょう。

インストール

インストールには以下のコマンドを叩きます。

$ gem install tmuxinator

これでインストール自体はおしまいです!

簡単な設定

エディターの設定

エディターを用いるため、環境変数をexportしておきます。

$ export EDITOR='vim'

シェルの設定

まずはtmuxinator用のディレクトリを作成します。

$ mkdir ~/.tmuxinator

shellに応じた設定ファイルを https://raw.githubusercontent.com/tmuxinator/tmuxinator/master/completion/ からダウンロードして、shellに反映させます。

zshの場合、以下のようにします。

$ export SHELL='zsh'
$ wget https://raw.githubusercontent.com/tmuxinator/tmuxinator/master/completion/tmuxinator.zsh
$ mv tmuxinator.zsh ~/.tmuxinator/
$ echo 'source ~/.tmuxinator/tmuxinator.zsh' >> ~/.zshrc

ここまで出来たら、インストールは完了です。 次のようにコマンドを実行すると、インストールが正常にできているかどうかをチェックすることができます。

$ mux doctor

Checking if tmux is installed ==> Yes
Checking if $EDITOR is set ==> Yes
Checking if $SHELL is set ==> Yes

全部Yesになっていれば準備OKです!

使ってみる

いよいよ実際に使ってみましょう。

tmuxinatorのプロジェクトを作成する

次のコマンドを実行すると、tmuxの設定をひとまとめにするプロジェクトを新規作成することができます。

$ mux new [プロジェクト名]

例えば、

$ mux new sample

としてみます。

実行するとまずエディタが立ち上がりますが、一旦そのままcloseしましょう。

エディタが編集しようとしたものがtmuxinatorのプロジェクト設定ファイルで、~/.tmuxinator/sample.ymlとして保存されています。

このファイルを好きなように編集すれば好きな様にtmuxを操ることができます!

プロジェクト設定ファイルを編集する

設定ファイルを編集するには、以下のコマンドを実行します。

mux open sample

まぁ普通にエディタで開いてもOKです。

# ~/.tmuxinator/sample.yml

name: sample # プロジェクト名を記述します
root: ~/ # rootディレクトリの指定します

# Optional tmux socket
# socket_name: foo # tmuxのソケットの指定が必要な場合に使用します

# Runs before everything. Use it to start daemons etc.
# pre: sudo /etc/rc.d/mysqld start # tmuxinator実行時に実行するコマンド群を記述します。複数行でも大丈夫です!
# pre:
#   - hoge
#   - fuga
#   - foo
#   - bar

# Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions.
# pre_window: rbenv shell 2.0.0-p247 # pre: のwindowやpaneを開く直前バージョンです

# Pass command line options to tmux. Useful for specifying a different tmux.conf.
# tmux_options: -f ~/.tmux.mac.conf # tmuxコマンドを実行するときにオプションを設定しておくことができます

# Change the command to call tmux.  This can be used by derivatives/wrappers like byobu.
# tmux_command: byobu # 呼び出されるtmuxコマンドを変更することができます。 tmuxではなくbyobuを使いたいときなどに使用します。

windows: # ここの下にwindowの設定を並べていきます。
  - editor: # windowに名前を付けます
      # tmuxのlayoutを指定できます。(ex. main-vertical、tiled)
      # tmuxのlist-windowコマンドで表示された数値をコピペることでの指定でもできます (ex. 8b89,238x56,0,0{118x56,0,0,0,119x56,119,0,5})
      layout: main-vertical
      panes: # ペイン分割を行います。各ペインに対してそれぞれ好きなコマンドを実行できます!
        - vim # vimを実行したり、
        - guard # guardを実行したり。
  - server: bundle exec rails s # 2つめのwindowの設定を書きます。 ペイン分割等がなければそのまますぐにコマンドをかけばおしまいです。
  - logs: tail -f log/development.log # 3つめ。

このような設定項目があるので好きなtmuxの設定にしていきます。終わったら保存して終了。

tmuxinator発動

プロジェクト設定ファイルの編集が終わったらいよいよ起動です!

$ mux sample

このコマンドを実行すると先ほど書いたプロジェクト設定ファイルを元にしてtmuxが立ち上がり、いつでも好きなレイアウト&実行してほしいコマンドが全て実行されたtmuxが手には言います!!

立ち上がった時はめちゃくちゃ便利!と思うこと間違いなしです:)

終わりに

tmuxinatorはちょっと使い方を覚えるだけでめちゃくちゃ便利になるので相当助かります。例えば

  • 仕事用プロジェクト
  • 趣味用プロジェクト
  • 複数台サーバ用プロジェクト

などといった様にプロジェクトを分けたりするとより捗るかな、と思います。

list-windowの値を用いる事によって複雑なペイン分割にも対応できているのはすごく嬉しいですね。

tmuxinatorで、快適なtmux生活を!