[Server & Network] tmux をインストールして使い始めるまで (Homebrew 編)

なかなか踏み出せずにいたのですが、こちらのエントリに背中を押され、はじめてみることにしました。

インストール

とりあえず手元の Mac にいれて、なれるところから始めることにしました。

% brew install tmux
==> Installing tmux dependency: libevent
==> Downloading https://github.com/downloads/libevent/libevent/libevent-2.0.21-s
######################################################################## 100.0%
==> ./configure --disable-debug-mode --prefix=/usr/local/Cellar/libevent/2.0.21
==> make
==> make install
  /usr/local/Cellar/libevent/2.0.21: 48 files, 1.8M, built in 60 seconds
==> Installing tmux
==> Downloading http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.8/tmux
######################################################################## 100.0%
==> Patching
patching file osdep-darwin.c
patching file utf8.c
==> ./configure --prefix=/usr/local/Cellar/tmux/1.8 --sysconfdir=/usr/local/etc
==> make install
==> Caveats
Example configurations have been installed to:
  /usr/local/Cellar/tmux/1.8/share/tmux/examples
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
  /usr/local/Cellar/tmux/1.8: 14 files, 668K, built in 32 seconds

/usr/local/Cellar/tmux/1.8/share/tmux/examples に設定サンプルがあるよと言うことなので確認する。
設定ファイル ~/.tmux.conf を作成する。

Prefix の変更と Config Reload

キーバインドに Ctrl-b が使われていたり、ウィンドウの操作が独特な感じのため、どうやらこれを設定している方が多いよう。
少し試したところ、覚えられそうにないので、先人の設定ファイルを元に検討してみる。
まず Prefix のキーバインドを変更する。

~/.tmux.conf
# Prefix key
unbind C-b
set -g prefix C-t
bind C-t send-prefix
# reload config
bind C-r source-file ~/.tmux.conf \; display "~/.tmux.conf is reloaded!"

さらに設定ファイルの再読み込みのキーバインドを設定しておくと後が楽になりそうなのでやっておく。

% tmux source-file ~/.tmux.conf

以後は、上記のキーバインドが有効となる。

esc キーの遅延をなくす

default では、esc キーの押下にディレイがあるそうなので、これを短くしておきます。

~/.tmux.conf
# escape key delay
set -sg escape-time 1

Pane の操作を emacs 風に変更する

ctrl+"ctrl+% に混乱したので、こちらを参考に変更する。

# Pane
# http://gihyo.jp/admin/serial/01/ubuntu-recipe/0292?page=2
# エスケープシーケンス+1で元に戻す
unbind 1
bind 1 break-pane \; display-panes
# エスケープシーケンス+2で横線による分割
unbind 2
bind 2 split-window -v \; display-panes
# エスケープシーケンス+3で縦線による分割
unbind 3
bind 3 split-window -h \; display-panes
# エスケープシーケンス+oでペイン間を移動
bind -r C-o select-pane -t :.+ \; refresh-client
bind -r o display-panes \; select-pane -t :.+ \; refresh-client
# 「C-k」でペイン単位に削除する
unbind C-k
bind C-k confirm kill-pane
unbind K
bind K confirm kill-pane

trackpad(mouse) スクロールを有効にする

例えば、cat で流れたテキストをさかのぼりたいと思ってもできない。
バッファをスクロールするには、以下を設定する。

~/.tmux.conf
set -g mode-mouse on

terminal.app

が、terminal.app ではうまく動かない。
MouseTerm という SIMBL プラグインをインストールする必要があるそう。

SIMBL をアンインストールする

SIMBL って聞き覚えがあるなと思ったら、SafariStand もそうでした。
いまは EasySIMBLで管理するのが良いようなので、乗り換えます。

% sudo rm -rf /Library/Application\ Support/SIMBL
% sudo rm -rf /Library/InputManagers/SIMBL
% rm -rf Library/Application\ Support/SIMBL

EasySIMBL と MouseTerm をインストールする

iTerm.app

iTerm.app ではうまく動く。
が、Copy & Paste ができない。
こちらの option を押しながら選択することで、動きました。

trackpad(mouse) ペイン操作を有効にする

スクロール以外にも、ペインの操作をしたくなりそうなので設定しておきます。

~/.tmux.conf
set -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

直感的な動作ができました。
リサイズだけ正しい挙動がどんなものか分かりません。

terminal.app

が、Copy & Paste ができない。
こちらも option を押しながら選択することで、動きました。

trackpad(mouse) 操作の on/off を設定する

上記の設定を行うと、vim 内のスクロールのつもりが、tmux の操作になっています。
どうやら、状況に応じて mode-mouse を on/off するようなので、こちらの設定を拝借します。

~/.tmux.conf
set -gw mode-mouse off
bind-key m \
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-utf8 on" "set-option -gq mouse-utf8 off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-resize-pane on" "set-option -gq mouse-resize-pane off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-select-pane on" "set-option -gq mouse-select-pane off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-select-window on" "set-option -gq mouse-select-window off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gw mode-mouse on" "set-option -gw mode-mouse off"

status-line(bar) の表示を変更する

上記の mode-mouse の on/off 状態をひと目で把握したかったのですが、設定方法がよく分からなかったので試行錯誤しました。

~/.tmux.conf
set -g status on
set -g status-right "#(tmux show-options -gw mode-mouse|sed 's/mode-//;s/ /:/')"

ただ標準の設定が消えてしまったので、追加する方法を探します。
一度設定を外して再起動。以下のコマンドで確認する。

% tmux show-options -g | less
    :
status-right ""#22T" %H:%M %d-%b-%y"
    :

最初はホスト。
おそらくこの設定を上書きしているので、これも設定ファイルに追加します。

~/.tmux.conf
# status line
set -g status on
set -g status-interval 5
# show mode-mouse on/off on right side of status bar
set -g status-right "#(tmux show-options -gw mode-mouse|sed 's/mode-//;s/ /:/') :: #H :: %H:%M %d-%b-%y"

区切り文字も付けて完成。
2014-02-19_tmux_01

カレントウィンドウに名前を付ける

少し使ってみて判別つきやすいように名前を付けたくなった。
prefix+, でリネームできる。
2014-02-19_tmux_02

補遺

略記が可能。

set-option        => set
set-window-option => setw