tmux (terminal multiplexer) は複数のターミナルウィンドウを1画面に表示できる仮想端末です。普段複数のターミナルを開いて作業する人には断然おすすめツールです。あれっ?あのターミナルィンドウはどこいった?というような無駄な時間をなくすことができます。また、screenのようにセッション管理もできるのでバックグラウンドでの処理も安全に実行できます。
brewでtmuxをインストールする
$ brew install tmux
(省略)
==> tmux
Example configuration has been installed to:
/usr/local/opt/tmux/share/tmux
これだけです。ありがとうbrew!!
ちなみにインストールしたバージョンはv3.2aです。バージョンによって、後述する.tmux.confの書き方が変わってきますのでご注意ください。
tmuxの基本操作
tmux用語
- セッション(Session)
- tmuxに管理される仮想端末全体
- 各セッションは1つ以上のウィンドウを持つ
- ウィンドウ(Window)
- tmuxセッション内に開かれている1つの仮想端末の画面全体
- ウィンドウは1つ以上のペインを持つ
- ペイン(Pane)
- 分割されたウィンドウの単位
- ペインそれぞれが独立した擬似端末となる
tmuxの使い方
基本コマンドをまとめました。
セッションの操作
コマンド | 動作 | 入力場所 |
tmux | セッションを起動する | ターミナル |
tmux new -s セッション名 | セッションに名前をつけて起動する | ターミナル |
[Ctrl + b]のあと[d] | デタッチ(現在のセッションから抜ける) | 仮想端末 |
exit | 現在のセッション終了(セッション削除) | 仮想端末 |
tmux kill-session -t セッション名 | セッション名を指定してセッションを終了する | ターミナル |
tmux ls | 存在するセッションのリスト表示 | ターミナル |
tmux attach | 存在するセッションが1つの時、そのセッションにアタッチする (セッションに入る) | ターミナル |
tmux attach -t セッション名 | セッション名を指定してアタッチする | ターミナル |
ウィンドウの操作
コマンド | 操作 | 入力場所 |
[Ctrl + b]のあと[c] | 新しいウィンドウを作成 (自動的にウィンドウの番号が振られる) | 仮想端末 |
[Ctrl + b]のあと[&] | ウィンドウを閉じる | 仮想端末 |
[Ctrl + b]のあと[ウィンドウ番号] | 指定した番号のウィンドウが表示される | 仮想端末 |
[Ctrl + b]のあと[p] | 前の番号のウィンドウに移動 | 仮想端末 |
[Ctrl + b]のあと[p] | 次の番号のウィンドウに移動 | 仮想端末 |
[Ctrl + b]のあと[w] | ウィンドウの一覧表示 | 仮想端末 |
ペインの操作
コマンド | 操作 | 入力場所 |
[Ctrl + b]のあと[%] | 垂直分割(ペイン化) | 仮想端末 |
[Ctrl + b]のあと[“] | 水平分割(ペイン化) | 仮想端末 |
[Ctrl + b]のあと[x] | ペインの削除(分割していない状態だとウィンドウが消える) | 仮想端末 |
[Ctrl + b]のあと[!] | ペイン化解除(ウィンドウだけになる) | 仮想端末 |
[Ctrl + b]のあと[o] | アクティブペインの移動 | 仮想端末 |
[Ctrl + b]のあと[矢印キー] | アクティブペインの移動 | 仮想端末 |
[Ctrl + b]のあと[q] | ペインのインジケーター(番号)表示 | 仮想端末 |
[Ctrl + b]のあと[spaceキー] | ペインレイアウト変更 (お気に入りのレイアウトが出てくるまでく繰り返す) | 仮想端末 |
[Ctrl + b]のあと[:] | コマンドモードへ移行 | 仮想端末 |
[Ctrl + b]のあと [:resize-pane -U 数字] | 上部ペインのサイズ変更(コマンドモード) | 仮想端末 |
[Ctrl + b]のあと [:resize-pane -D 数字] | 下部ペインのサイズ変更(コマンドモード) | 仮想端末 |
[Ctrl + b]のあと [:resize-pane -R 数字] | 右部ペインのサイズ変更(コマンドモード) | 仮想端末 |
[Ctrl + b]のあと [:resize-pane -L 数字] | 左部ペインのサイズ変更(コマンドモード) | 仮想端末 |
もっと便利にカスタマイズする
「tmuxを使うならコピーモードを使いたいし、慣れ親しんだviコマンド風で使いたい」とか、「prefixの[Cntl + b]もキー配置的に片手で打ちにくいので変えたい」とか、「ペインのサイズ変更もマウスのドラッグで調整したい」とか、もっともっと便利にカスタマイズしていきます。
.tmux.confを編集していきます。
# prefixキーをC-qに変更
set -g prefix C-q
# C-bのキーバインドを解除
unbind C-b
# vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# | でペインを縦分割する
bind | split-window -h
# - でペインを縦分割する
bind - split-window -v
# マウス操作を有効にする
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on
# vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# | でペインを縦分割する
bind | split-window -h
# - でペインを縦分割する
bind - split-window -v
# マウス操作を有効にする
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on
# コピーモードを設定する
# コピーモードでvimキーバインドを使う
set-window-option -g mode-keys vi
# 'v' で選択を始める
bind -T copy-mode-vi v send-keys -X begin-selection
# 'y'でクリップボードにコピー
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# 'C-v'で矩形選択モードに切り替え
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
# 'V'で行ごと選択
bind -T copy-mode-vi V send-keys -X select-line
# Escで選択範囲解除
bind -T copy-mode-vi Esc send-keys -X clear-selection
.tmux.confをtmuxを落とさずに即時反映させる。
$ tmux source ~/.tmux.conf
コメント