🖥️

TMUX入門:ターミナルマルチプレクサーの基本と実践的な使い方

に公開

TMUX入門:ターミナルマルチプレクサーの基本と実践的な使い方

TMUX公式ロゴ
TMUX公式ロゴ(出典

TMUX公式スクリーンショット
公式ページより:ウィンドウ分割の例(出典

はじめに

TMUXは、ターミナルセッションを管理するための強力なツールです。この記事では、TMUXの基本的な使い方から、実践的な活用方法まで詳しく解説します。

TMUXとは

TMUX(Terminal Multiplexer)は、1つのターミナルウィンドウ内で複数のターミナルセッションを管理できるツールです。セッションの永続化や、ウィンドウの分割、ペインの管理など、効率的なターミナル操作を実現します。

主な特徴

  • セッションの永続化
  • ウィンドウの分割と管理
  • ペインの操作
  • キーバインドのカスタマイズ
  • リモートセッションの管理

基本的な使い方

1. インストール

macOSの場合:

brew install tmux

Ubuntuの場合:

sudo apt-get install tmux

2. 基本的なコマンド

TMUXの起動:

tmux

新しいセッションの作成:

tmux new -s セッション名

セッションの一覧表示:

tmux ls

3. 基本的なキーバインド

  • Ctrl+b d: セッションからデタッチ
  • Ctrl+b c: 新しいウィンドウを作成
  • Ctrl+b n: 次のウィンドウに移動
  • Ctrl+b p: 前のウィンドウに移動
  • Ctrl+b %: ペインを縦に分割
  • Ctrl+b ": ペインを横に分割

実践的な活用方法

1. セッション管理

1.1 セッションの作成と管理

# 新しいセッションを作成
tmux new -s dev

# セッションに再接続
tmux attach -t dev

# セッションの名前を変更
Ctrl+b $

1.2 セッションの永続化

TMUXの設定ファイル(~/.tmux.conf)に以下を追加:

# セッションの自動保存
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# 自動保存の有効化
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'

2. ウィンドウとペインの操作

2.1 ウィンドウの管理

  • Ctrl+b ,: ウィンドウの名前を変更
  • Ctrl+b w: ウィンドウ一覧を表示
  • Ctrl+b &: 現在のウィンドウを閉じる

2.2 ペインの操作

  • Ctrl+b z: ペインを最大化/元に戻す
  • Ctrl+b {: ペインを左に移動
  • Ctrl+b }: ペインを右に移動
  • Ctrl+b 矢印キー: ペイン間の移動

3. カスタマイズ

3.1 基本的な設定

~/.tmux.confに以下の設定を追加:

# マウスモードの有効化
set -g mouse on

# 256色のサポート
set -g default-terminal "screen-256color"

# ステータスバーのカスタマイズ
set -g status-style bg=black,fg=white
set -g status-left "#[fg=green]#H #[fg=black]• #[fg=green]#(uname -r | cut -c 1-6)#[default]"
set -g status-right "#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default]"

# Emacsキーバインドの設定
set -g mode-keys vi
set -g status-keys vi
set -g default-command ""

# コピーモードの設定
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"

3.2 Emacsキーバインドの活用

TMUXでは、Emacsライクなキーバインドを使用して効率的な操作が可能です。以下は主なEmacsキーバインドの一覧です:

コピーモードでの操作
  • Ctrl+b [: コピーモードに入る
  • Space: 選択開始
  • Enter: 選択したテキストをコピー
  • Esc: コピーモードを終了
ペイン操作
  • Ctrl+b Alt+1: ペインを水平レイアウトに変更
  • Ctrl+b Alt+2: ペインを垂直レイアウトに変更
  • Ctrl+b Alt+3: ペインをタイルレイアウトに変更
  • Ctrl+b Alt+5: ペインを対称レイアウトに変更
ウィンドウ操作
  • Ctrl+b Ctrl+n: 次のウィンドウに移動
  • Ctrl+b Ctrl+p: 前のウィンドウに移動
  • Ctrl+b Ctrl+c: 新しいウィンドウを作成
  • Ctrl+b Ctrl+w: ウィンドウ一覧を表示
セッション操作
  • Ctrl+b Ctrl+s: セッション一覧を表示
  • Ctrl+b Ctrl+d: 現在のセッションからデタッチ

これらのキーバインドは、~/.tmux.confでカスタマイズすることができます。例えば:

# カスタムキーバインドの設定
bind-key -n C-h select-pane -L
bind-key -n C-j select-pane -D
bind-key -n C-k select-pane -U
bind-key -n C-l select-pane -R

# ウィンドウのリサイズ
bind-key -r C-k resize-pane -U 5
bind-key -r C-j resize-pane -D 5
bind-key -r C-h resize-pane -L 5
bind-key -r C-l resize-pane -R 5

4. キーバインド一覧表

4.1 基本操作

キー 機能 説明
Ctrl+b d デタッチ 現在のセッションからデタッチ
Ctrl+b ? ヘルプ キーバインド一覧を表示
Ctrl+b : コマンドモード TMUXコマンドを入力
`Ctrl+b [ コピーモード テキスト選択モードに入る
Ctrl+b ] ペースト コピーしたテキストを貼り付け

4.2 ウィンドウ操作

キー 機能 説明
Ctrl+b c 新規ウィンドウ 新しいウィンドウを作成
Ctrl+b n 次のウィンドウ 次のウィンドウに移動
Ctrl+b p 前のウィンドウ 前のウィンドウに移動
Ctrl+b & ウィンドウを閉じる 現在のウィンドウを閉じる
Ctrl+b , ウィンドウ名変更 現在のウィンドウの名前を変更
Ctrl+b w ウィンドウ一覧 ウィンドウ一覧を表示

4.3 ペイン操作

キー 機能 説明
Ctrl+b % 縦分割 ペインを縦に分割
Ctrl+b " 横分割 ペインを横に分割
Ctrl+b z 最大化/復元 ペインを最大化/元に戻す
Ctrl+b { ペインを左に移動 現在のペインを左に移動
Ctrl+b } ペインを右に移動 現在のペインを右に移動
Ctrl+b 矢印キー ペイン間移動 指定した方向のペインに移動

4.4 コピーモード操作

キー 機能 説明
Space 選択開始 テキスト選択を開始
Enter コピー 選択したテキストをコピー
Esc 終了 コピーモードを終了
Ctrl+b [ コピーモード開始 コピーモードに入る
Ctrl+b ] ペースト コピーしたテキストを貼り付け

4.5 セッション操作

キー 機能 説明
Ctrl+b $ セッション名変更 現在のセッションの名前を変更
Ctrl+b s セッション一覧 セッション一覧を表示
Ctrl+b D セッション選択 デタッチするセッションを選択
Ctrl+b d デタッチ 現在のセッションからデタッチ

5. 設定の取得と適用

5.1 dotfilesからの設定取得

GitHub上のdotfilesリポジトリから設定を取得する方法:

# 設定ファイルのダウンロード
curl -o ~/.tmux.conf https://raw.githubusercontent.com/long-910/dotfiles/main/dotfiles/.tmux.conf

# または、git cloneを使用する場合
git clone https://github.com/long-910/dotfiles.git
cp dotfiles/dotfiles/.tmux.conf ~/.tmux.conf

5.2 設定の適用

  1. 設定ファイルの配置
# 設定ファイルをホームディレクトリに配置
cp .tmux.conf ~/.tmux.conf
  1. 設定の再読み込み
# 現在のセッションで設定を再読み込み
tmux source-file ~/.tmux.conf

# または、新しいセッションを開始
tmux new -s mysession

5.3 主な設定内容

取得した設定ファイルには以下の機能が含まれています:

# 基本的な設定
set -g default-terminal "screen-256color"
set -g mouse on
set -g history-limit 10000

# キーバインドの設定
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# ウィンドウの設定
setw -g mode-keys vi
setw -g automatic-rename on
setw -g aggressive-resize on

# ステータスバーの設定
set -g status-style bg=black,fg=white
set -g status-left "#[fg=green]#H #[fg=black]• #[fg=green]#(uname -r | cut -c 1-6)#[default]"
set -g status-right "#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default]"

# ペイン操作の設定
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# コピーモードの設定
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel

5.4 設定のカスタマイズ

取得した設定を自分の環境に合わせてカスタマイズする方法:

  1. 設定ファイルの編集
# 設定ファイルを編集
vim ~/.tmux.conf
  1. よく使用するカスタマイズ例:
# プレフィックスキーの変更
set -g prefix C-x
unbind C-a
bind C-x send-prefix

# ウィンドウの開始番号を1から始める
set -g base-index 1

# ペインの開始番号を1から始める
setw -g pane-base-index 1

# マウスでのリサイズを有効化
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
  1. 変更の適用
# 設定を再読み込み
tmux source-file ~/.tmux.conf

実践的なTips

1. 開発環境の構築

1.1 効率的なレイアウト

# 開発用セッションの作成
tmux new -s dev

# ウィンドウの分割
Ctrl+b %  # 縦分割
Ctrl+b "  # 横分割

1.2 よく使うコマンドのショートカット

~/.tmux.confに以下を追加:

# カスタムキーバインド
bind-key -n C-h select-pane -L
bind-key -n C-j select-pane -D
bind-key -n C-k select-pane -U
bind-key -n C-l select-pane -R

2. リモート開発での活用

2.1 SSHセッションの管理

# リモートサーバーへの接続
ssh user@remote-server

# 新しいTMUXセッションの作成
tmux new -s remote-dev

2.2 セッションの共有

# セッションの共有
tmux new -s shared -t existing-session

トラブルシューティング

1. よくある問題と解決方法

  1. セッションが切れた場合

    tmux attach
    
  2. キーバインドが効かない場合

    • ~/.tmux.confの設定を確認
    • TMUXの再起動
  3. 表示が崩れる場合

    # ターミナルのクリア
    Ctrl+b [
    # その後、Ctrl+l
    

まとめ

TMUXは、ターミナル操作を効率化する強力なツールです。基本的な使い方をマスターし、カスタマイズを加えることで、より快適な開発環境を構築できます。

参考リンク

GitHubで編集を提案

Discussion