なぜtmuxを入れたか
tmuxについて調べてみるとメリットとして挙がっているのは
- セッション、ウインドウ、ペインを使って複数端末を管理できること
- サーバに入れておけばデタッチとアタッチで全く同じ状態に復帰できたり、コマンドを走らせたまま接続を切れること
- ペインを同期して複数のペインで同時に同じコマンドを実行できる
というようなことで、便利ではあるもののiTerm2で特に不自由も感じていないし少なくとも開発マシンには入れる必要はないかなと思っていた。しかし、もう少し調べているとtmuxがCUIであることの利点を活かした
- tumxinatorでプロジェクトごとに自分で決めたウィンドウ、ペイン構成を一気に立ち上げられる
- tmuxで複数サーバの同時オペレーション
- tmux + irssi + canything で Anything 風チャンネル切り替えする
というような使い方を見つけて、これは便利そうだし他にも色々使い道がありそうだと思い入れてみることにした。
tmuxのインストールと設定
自分はOS Xを使っているのでhomebrewで
$ brew install tmux
またtmuxを使っている時でもpbcopyやlaunchctlを使えるように
$ brew install reattach-to-user-namespace
$ echo 'set-option -g default-command "reattach-to-user-namespace -l zsh"' >> ~/.tmux.conf
ググったりmanを見たりしつつ設定した~/.tmux.conf
はこんな感じ
set-option -g escape-time 0
set-option -g default-command "reattach-to-user-namespace -l zsh"
set-option -g default-terminal "xterm-256color"
set-option -g mode-mouse on
set-option -g mouse-select-pane on
set-option -g mouse-resize-pane on
set-option -g mouse-select-window on
set-window-option -g utf8 on
set-window-option -g mode-keys emacs
set-window-option -g automatic-rename off
set-option -g prefix C-t
unbind-key C-b
bind-key C-t send-prefix
bind C-r source-file ~/.tmux.conf
bind C-w split-window -p 15 'tmux lsw | peco | cut -d":" -f 1 | xargs tmux select-window -t'
bind C-n next-window
bind C-o select-pane -t :.+
bind C-p previous-window
bind C-l last-pane
bind 0 kill-pane
bind 2 split-window -v
bind 3 split-window -h
bind C-y paste-buffer
set-window-option -g status-bg colour237
set-window-option -g status-fg white
set-window-option -g window-status-bg colour240
set-window-option -g window-status-fg white
set-window-option -g window-status-current-bg colour244
set-window-option -g window-status-current-fg blue
set-window-option -g window-status-current-format " #I| #W "
set-window-option -g window-status-format " #I| #W "
set-window-option -g status-right "[%Y-%m-%d(%a) %H:%M]"
tmuxinatorをインストール
現時点での最新バージョンはtmuxinator-0.6.7
だった。
$ gem install tmuxinator
インストール後mux doctor
で利用できる状態にあるか確認できる。
自分はzshを使っているのでzsh用の補完スクリプトをコピーして読み込ませる
$ gem contents tmuxinator | grep zsh | xargs -J % cp % ~/.tmuxinator
$ echo "[[ -s ~/.tmuxinator ]] && source ~/.tmuxinator/tmuxinator.zsh" >> ~/.zshrc
pecoと連携
以下には以前はcanythingについて書いていたけれども、今はpecoがおすすめ。
詳細はpecoの記事を参照。