Post

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


この記事はZennでも公開しています。

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

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

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

はじめに

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

TMUXとは

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

主な特徴

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

基本的な使い方

1. インストール

macOSの場合:

1
brew install tmux

Ubuntuの場合:

1
sudo apt-get install tmux

2. 基本的なコマンド

TMUXの起動:

1
tmux

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

1
tmux new -s セッション名

セッションの一覧表示:

1
tmux ls

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

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

実践的な活用方法

1. セッション管理

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

1
2
3
4
5
6
7
8
# 新しいセッションを作成
tmux new -s dev

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

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

1.2 セッションの永続化

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

1
2
3
4
5
6
7
# セッションの自動保存
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に以下の設定を追加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# マウスモードの有効化
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でカスタマイズすることができます。例えば:

1
2
3
4
5
6
7
8
9
10
11
# カスタムキーバインドの設定
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リポジトリから設定を取得する方法:

1
2
3
4
5
6
# 設定ファイルのダウンロード
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. 設定ファイルの配置
    1
    2
    
    # 設定ファイルをホームディレクトリに配置
    cp .tmux.conf ~/.tmux.conf
    
  2. 設定の再読み込み ```bash

    現在のセッションで設定を再読み込み

    tmux source-file ~/.tmux.conf

または、新しいセッションを開始

tmux new -s mysession

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#### 5.3 主な設定内容

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

```bash
# 基本的な設定
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. 設定ファイルの編集
    1
    2
    
    # 設定ファイルを編集
    vim ~/.tmux.conf
    
  2. よく使用するカスタマイズ例: ```bash

    プレフィックスキーの変更

    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
2
3
4
5
3. 変更の適用
```bash
# 設定を再読み込み
tmux source-file ~/.tmux.conf

実践的なTips

1. 開発環境の構築

1.1 効率的なレイアウト

1
2
3
4
5
6
# 開発用セッションの作成
tmux new -s dev

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

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

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

1
2
3
4
5
# カスタムキーバインド
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セッションの管理

1
2
3
4
5
# リモートサーバーへの接続
ssh user@remote-server

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

2.2 セッションの共有

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

トラブルシューティング

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

  1. セッションが切れた場合
    1
    
    tmux attach
    
  2. キーバインドが効かない場合
    • ~/.tmux.confの設定を確認
    • TMUXの再起動
  3. 表示が崩れる場合
    1
    2
    3
    
    # ターミナルのクリア
    Ctrl+b [
    # その後、Ctrl+l
    

まとめ

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

参考リンク

This post is licensed under CC BY 4.0 by the author.