🖥️
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 設定の適用
- 設定ファイルの配置
# 設定ファイルをホームディレクトリに配置
cp .tmux.conf ~/.tmux.conf
- 設定の再読み込み
# 現在のセッションで設定を再読み込み
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 設定のカスタマイズ
取得した設定を自分の環境に合わせてカスタマイズする方法:
- 設定ファイルの編集
# 設定ファイルを編集
vim ~/.tmux.conf
- よく使用するカスタマイズ例:
# プレフィックスキーの変更
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
- 変更の適用
# 設定を再読み込み
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. よくある問題と解決方法
-
セッションが切れた場合
tmux attach
-
キーバインドが効かない場合
-
~/.tmux.conf
の設定を確認 - TMUXの再起動
-
-
表示が崩れる場合
# ターミナルのクリア Ctrl+b [ # その後、Ctrl+l
まとめ
TMUXは、ターミナル操作を効率化する強力なツールです。基本的な使い方をマスターし、カスタマイズを加えることで、より快適な開発環境を構築できます。
Discussion