tmuxとは
tmux(Terminal Multiplexer)は、1つのターミナルウィンドウ内で複数のターミナルセッションを管理できる強力なツールです。画面分割、セッションの保持、リモート作業の継続など、開発者の生産性を大幅に向上させる機能を提供します。
tmuxのインストール
各ディストリビューションでのインストール
# Ubuntu/Debian
sudo apt-get install tmux
# CentOS/RHEL/Fedora
sudo yum install tmux
# macOS
brew install tmux
# インストール確認
tmux -V
ファイルツリー
基本的な使い方
セッションの開始と管理
# 新しいセッションを開始
tmux
# 名前付きセッションを開始
tmux new -s myproject
# セッション一覧を表示
tmux ls
# 既存のセッションにアタッチ
tmux attach -t myproject
# セッションから一時的に離脱
# Ctrl+b, d
# セッションを終了
exit
プレフィックスキー
tmuxのすべてのコマンドは、プレフィックスキー(デフォルト: Ctrl+b)の後に続けて入力します。
# プレフィックスキーの基本
Ctrl+b → コマンドキー
# 例:新しいウィンドウを作成
Ctrl+b, c
画面分割の基本
ペイン分割
tmuxの最大の魅力の一つが、画面分割機能です。ペイン(pane)と呼ばれる分割された領域で、複数の作業を同時に進められます:
# 画面を水平に分割(上下)
Ctrl+b, \"
# 画面を垂直に分割(左右)
Ctrl+b, %
# ペイン間の移動
Ctrl+b, ↑/↓/←/→
# 次のペインへ移動
Ctrl+b, o
# ペインを閉じる
Ctrl+b, x
# または
exit
🔄 便利な使い方: エディタを左に、テスト実行を右に配置すると、コードを書きながら結果を確認できますね!
ペインのレイアウト変更
分割したペインのサイズや配置も柔軟に変更できます:
# ペインのサイズ調整
Ctrl+b, Ctrl+↑/↓/←/→
# プリセットレイアウトの切り替え
Ctrl+b, Space
# 均等分割
Ctrl+b, Alt+1 # 垂直均等分割
Ctrl+b, Alt+2 # 水平均等分割
# ペインの最大化/元に戻す
Ctrl+b, z
🔍 注目機能: Ctrl+b, z
でペインを一時的に最大化できるので、集中して作業したい時に便利です!
ウィンドウ管理
複数ウィンドウの操作
# 新しいウィンドウを作成
Ctrl+b, c
# ウィンドウ間の移動
Ctrl+b, n # 次のウィンドウ
Ctrl+b, p # 前のウィンドウ
Ctrl+b, 0-9 # 番号でウィンドウ選択
# ウィンドウ一覧
Ctrl+b, w
# ウィンドウの名前変更
Ctrl+b, ,
# ウィンドウを閉じる
Ctrl+b, &
ウィンドウとペインの組み合わせ
# 実践的な使用例
# 1. 開発用ウィンドウ(エディタ + ターミナル)
# 2. サーバー監視用ウィンドウ(ログ表示)
# 3. データベース用ウィンドウ(クエリ実行)
高度な機能
セッション管理
# セッションの切り替え
Ctrl+b, s # セッション一覧から選択
# セッション名の変更
Ctrl+b, $
# セッションの作成(現在のセッションを維持)
Ctrl+b, :new-session -s newsession
# セッション間の移動
Ctrl+b, ( # 前のセッション
Ctrl+b, ) # 次のセッション
コピーモード
# コピーモードに入る
Ctrl+b, [
# コピーモードでの操作(vi風)
h,j,k,l # カーソル移動
/ # 検索
n # 次の検索結果
Space # 選択開始
Enter # 選択終了・コピー
q # コピーモード終了
# ペースト
Ctrl+b, ]
ペインの同期
# すべてのペインに同じコマンドを送信
Ctrl+b, :setw synchronize-panes on
# 同期を解除
Ctrl+b, :setw synchronize-panes off
# 使用例:複数サーバーへの同時操作
カスタマイズ
設定ファイル(~/.tmux.conf)
# マウスサポートを有効化
set -g mouse on
# プレフィックスキーをCtrl+aに変更
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# ペイン分割のキーバインドを直感的に
bind | split-window -h
bind - split-window -v
# ペイン移動をvi風に
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# ステータスバーのカスタマイズ
set -g status-bg black
set -g status-fg white
set -g status-left '#[fg=green]#S '
set -g status-right '#[fg=yellow]#(date +"%Y-%m-%d %H:%M")'
設定の再読み込み
# 設定ファイルの再読み込み
Ctrl+b, :source-file ~/.tmux.conf
# または設定ファイルにバインド追加
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
実践的な使用例
開発環境の構築
# 開発用セッションの作成
tmux new -s dev
# ウィンドウ1: コーディング
# - 左ペイン: Vim/エディタ
# - 右ペイン: テスト実行
# ウィンドウ2: サーバー
# - 上ペイン: アプリケーションサーバー
# - 下ペイン: ログ監視
# ウィンドウ3: Git操作
# - フルスクリーン: Git操作用
リモート作業の継続
# SSHでリモートサーバーに接続
ssh user@server
# tmuxセッションを開始
tmux new -s remote-work
# 作業中...
# 接続が切れても大丈夫
# 再接続後
ssh user@server
tmux attach -t remote-work
モニタリング環境
# 監視用セッションの作成
tmux new -s monitor
# 4分割画面で各種監視
# - 左上: top(システムリソース)
# - 右上: tail -f /var/log/syslog
# - 左下: netstat -tuln
# - 右下: df -h(定期実行)
トラブルシューティング
よくある問題と解決策
# マウスでテキストが選択できない
# Shiftキーを押しながら選択
# 256色が表示されない
export TERM=xterm-256color
tmux -2 # 256色モードで起動
# コピーペーストが機能しない
# OSのクリップボードと連携設定が必要
# macOS: reattach-to-user-namespace
# Linux: xclip または xsel
セッションの復旧
# ゾンビセッションの確認
ps aux | grep tmux
# 強制的にセッションを削除
tmux kill-session -t session-name
# すべてのセッションを削除
tmux kill-server
プラグインとツール
Tmux Plugin Manager (TPM)
# TPMのインストール
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# ~/.tmux.confに追加
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# プラグインのインストール
Ctrl+b, I
便利なプラグイン
# tmux-resurrect: セッションの保存/復元
Ctrl+b, Ctrl+s # 保存
Ctrl+b, Ctrl+r # 復元
# tmux-continuum: 自動保存
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
🎮 理解度チェック
Q1: tmuxで画面を垂直に分割(左右)するショートカットは?
Q2: tmuxセッションから一時的に離脱するショートカットは?
Q3: ペインを一時的に最大化するショートカットは?
ベストプラクティス
効率的なワークフロー
tmuxを最大限に活用するためのポイントをまとめました:
- プロジェクトごとにセッション作成: わかりやすい名前を付ける
- レイアウトの保存: 頻繁に使うレイアウトは設定ファイルに保存
- キーバインドの最適化: よく使う操作はカスタムバインドに
- ステータスバーの活用: 重要な情報を常に表示
セキュリティ考慮事項
# 共有環境での使用時
# セッションにパスワードは保存しない
# 離席時は必ずデタッチ(Ctrl+b, d)
# 不要なセッションは削除
🔒 セキュリティTips: 共有サーバーで作業する場合は、必ずセッションから離脱してから離席しましょう!
📝 まとめ
今回はtmux
について学びました!
tmuxは単なる画面分割ツールではなく、ターミナル作業を革新的に効率化する強力なツールでしたね。覚えておきたいポイントをまとめます:
- プレフィックスキーはデフォルトで
Ctrl+b
- 画面分割は
Ctrl+b, %
(左右)とCtrl+b, "
(上下) - セッション離脱は
Ctrl+b, d
で作業状態を保持 - ペインの最大化は
Ctrl+b, z
で集中作業 - リモート作業で接続が切れても安心
tmuxを使いこなせば、複数のタスクを同時に進めたり、リモートサーバーでの作業を安全に行えるようになります。
次はvimの基本操作で、ターミナルでのテキスト編集を学んでみましょう!