ターミナルを自由自在に操る -
ゼロからtmuxを学ぶ
お使いのOSに合わせてtmuxをインストールしてください
brew install tmux
Homebrewが必要です
sudo apt install tmux
パッケージマネージャーでインストール
sudo yum install tmux
または dnf install tmux
インストール確認: tmux -V (バージョンが表示されます)
1つのターミナル画面の中で複数の作業環境を管理するツール
「複数のものを1つにまとめる」という意味です。tmuxを使うと、1つのターミナルウィンドウの中に複数の仮想端末を作れます。
tmuxは「デスクの上の複数のモニター」のようなものです:
1つのターミナルを複数のペインに分割。エディタとサーバーのログを同時に見られます。
SSH切断しても作業が続く。いつでも作業を再開できます。
ブラウザのタブのように、複数の作業環境を切り替え。
tmuxを理解する上で欠かせない3つの階層構造
複数のウィンドウを含む大きな箱
ブラウザのタブのように切り替え可能
const hello = () => {
console.log('tmux');
};
ウィンドウ内を複数に分割
異なるプロジェクトはセッションで分離。切り替えは簡単
作業状態がサーバーに保存される。最も重要な機能の一つ
セッションが複数のウィンドウを持ち、
各ウィンドウは複数のペインに分割できる
tmuxの操作は「プレフィックスキー(デフォルトは Ctrl+b)を押してから、次のキーを押す」という2段階操作です。
tmuxの最上位の作業単位。1つのセッションに複数のウィンドウを持てます。
セッションを離脱(detach)しても、サーバー上でプロセスは動き続けます。SSH切断後も作業状態が完全に保存され、後から再接続できます。
tmux new -s work
セッション作成(-s はセッション名指定)
tmux attach -t work
再接続(-t はターゲット指定)
セッション内のタブのようなもの。ブラウザのタブと同じ感覚で使えます。
ウィンドウ内の分割領域。これがtmuxの最大の魅力です。
実際のキーボード操作を可視化して確認
下のキーボードで Ctrl+b を押してから、各キーを押してみてください
よく使うコマンドをカテゴリ別に表示。コピーしてすぐ使えます。
tmux new -s <name>
tmux ls
tmux attach -t <name>
tmux kill-session -t <name>
:source-file ~/.tmux.conf
よくある作業シナリオとtmuxでの実現方法
tmux new -s webapp
セッション作成
tmux new -s monitor
監視セッション作成
tmux ls
セッション一覧確認
tmux kill-session -t old_session
不要なセッションを終了
tmux kill-server
全セッションを終了(注意!)
コピーしてすぐ使える設定例
# Ctrl+b のかわりに Ctrl+a を使う
set -g prefix C-a
unbind C-b
bind C-a send-prefix
-g = global(グローバル設定)
send-prefix = tmux内のtmux(ネスト)にプレフィックスを送るための設定
ネストを使わない場合は3行目は不要ですが、念のため残しておくと安全です。
# r で設定再読み込み
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# | で左右分割、- で上下分割
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
覚え方: |(パイプ)は縦棒だから左右に分割、-(ハイフン)は横棒だから上下に分割
# マウスでペイン選択・リサイズ・コピー可能に
set -g mouse on
# マウスドラッグでコピーモードを終了しない
unbind -T copy-mode-vi MouseDragEnd1Pane
MouseDragEnd1Pane: デフォルトではマウスドラッグ終了時にコピーモードが終了してしまい、選択範囲が消えます。この設定で選択を保持できます。
注意: copy-mode-vi はviモード設定時のみ有効です。
# コピーモードをvim風に
setw -g mode-keys vi
# ペイン移動をvim風に
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# コピーモードの選択をvim風に
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
# ステータスバーを上部に
set -g status-position top
# ステータスバーの更新間隔
set -g status-interval 1
# ステータスバーの色
set -g status-style bg=black,fg=white
# アクティブなウィンドウのスタイル
setw -g window-status-current-style bg=blue,fg=white,bold
# ペインボーダーの色
set -g pane-border-style fg=colour240
set -g pane-active-border-style fg=colour39
# ウィンドウ番号を1から
set -g base-index 1
setw -g pane-base-index 1
# ウィンドウを閉じた時に番号を詰める
set -g renumber-windows on
理由: キーボードの配列上、0は1より遠い位置にあるため、1から始めた方が押しやすいです。
~/.tmux.conf を作成
source-file ~/.tmux.conf