Tips & Tricks
tmuxの便利なテクニックとノウハウを紹介します。
ネストしたtmuxセッション
ローカルとリモートで両方tmuxを使う場合、2階層のtmuxが実行されます。
外側のtmuxを一時無効化
Ctrl+b Ctrl+b
2回プレフィックスキーを押すと、内側のセッションにコマンドが送信されます。
.tmux.confで設定
# ~/.tmux.conf
# 外側のtmux用色
set -g status-bg blue
set -g status-fg white
# ローカルキーとリモートキーを区別
bind -n M-a send-keys C-a # Alt+a を Ctrl+a に
コマンド履歴
ペイン履歴をファイルに保存
tmux capture-pane -t <session> -p > output.txt
履歴を全て確認
Ctrl+b [
でコピーモードに入ると、スクロール履歴が確認できます。
レイアウト保存・復元
現在のレイアウトを保存
tmux list-windows -t <session> -F "#{window_layout}"
出力されたレイアウト文字列を記録。
レイアウトを復元
tmux select-layout -t <session> <layout-string>
キーバインドのデバッグ
入力されたキーを確認
showkey -a
または tmux内で:
Ctrl+b ?
でキーバインド一覧を表示。
パフォーマンス最適化
不要な設定を削除
# ~/.tmux.conf
# 頻繁な描画を避ける
set -g status-interval 5
# シェル統合を無効化(不要な場合)
set -g default-shell /bin/bash
SSH接続時の最適化
# ~/.tmux.conf
# SSH接続時は画面更新を抑制
set -g aggressive-resize on
ペアプログラミング
複数ユーザーが同じセッションを共有
# ユーザーA がセッション作成
tmux new-session -s pair -c ~/project
# ユーザーB がセッション接続
tmux attach -t pair
# 別の方法:所有者がウィンドウを共有可能に
tmux new-session -s shared
tmux send-keys "chmod 777 /tmp/tmux-*" Enter
セッションソケットの権限設定:
# セッション作成時にソケット権限を設定
TMUX_SOCK="/tmp/tmux-shared"
mkdir -p "$TMUX_SOCK"
tmux new-session -S "$TMUX_SOCK/session" -s shared
chmod 777 "$TMUX_SOCK"
chmod 777 "$TMUX_SOCK"/session
# 別ユーザーが接続
tmux -S "$TMUX_SOCK/session" attach -t shared
SSH接続保持
SSH KeepAlive設定
# ~/.ssh/config
Host *
ServerAliveInterval 60
ServerAliveCountMax 10
tmuxでSSH接続を保つ
# ~/.tmux.conf
# セッション生成にかかる時間を設定
set -g default-command "exec /bin/bash"
マウス操作の活用
マウス機能の有効化
set -g mouse on
マウスでできる操作
- クリック: ペイン選択
- ドラッグ: ペインリサイズ
- スクロール: スクロール履歴確認
- ダブルクリック: 単語選択→コピー
スムーズなアニメーション設定
# ~/.tmux.conf
# ペイン分割のアニメーション効果
set -g pane-border-status bottom
# ウィンドウ切り替え時のアニメーション(対応端末のみ)
set -g transition-speed fast
画面キャプチャと共有
現在の画面をスクリーンショット
tmux capture-pane -t <session>:<window>.<pane> -p > screenshot.txt
画面を記録(スクリーン記録)
#!/bin/bash
# tmux-record.sh
tmux capture-pane -t mywork -p > recording.txt
while true; do
clear
cat recording.txt
sleep 1
tmux capture-pane -t mywork -p > recording.txt
done
Vimとの統合
tmuxペイン内でVim検索結果をコピー
" ~/.vim/plugin/tmux-copy.vim
nnoremap <leader>c :!tmux send-keys -t right 'search' C-m<CR>
vim-tmux-navigatorプラグイン
# Vim内でもtmux内でも同じキーバインドでナビゲート
# ~/.vimrc
Plugin 'christoomey/vim-tmux-navigator'
複数ディスプレイ・モニター
ウィンドウを別ディスプレイに移動
# セッション内のウィンドウを別セッションに移動
tmux move-window -s <session1>:<window> -t <session2>
デスクトップ環境での使用
# ウィンドウマネージャーと連携
tmux send-keys -t <pane> "open -n -a Firefox" Enter
トラブルシューティング
セッションが応答しない
# セッション一覧確認
tmux ls
# 強制削除
tmux kill-session -t <stuck-session>
# 全セッション削除(危険)
tmux kill-server
ペイン操作が遅い
# status-interval を増やす
set -g status-interval 10
# 不要なプラグインを削除
キーバインドが効かない
# キーバインド確認
tmux list-keys
# 設定ファイル再読み込み
tmux source-file ~/.tmux.conf
自動化スクリプト
朝のセッション設定スクリプト
#!/bin/bash
# morning-setup.sh
SESSION="morning"
tmux new-session -d -s $SESSION
# メールチェック
tmux send-keys -t $SESSION "mutt" Enter
# カレンダー確認
tmux new-window -t $SESSION
tmux send-keys -t $SESSION "cal" Enter
# ニュース確認
tmux new-window -t $SESSION
tmux send-keys -t $SESSION "newsboat" Enter
tmux attach -t $SESSION
終了時のセッションバックアップ
#!/bin/bash
# backup-sessions.sh
BACKUP_DIR="$HOME/.tmux/backups"
mkdir -p "$BACKUP_DIR"
# 全セッション情報をバックアップ
tmux list-sessions -F "#{session_name}" | while read session; do
tmux capture-pane -t "$session" -p > "$BACKUP_DIR/$session.txt"
done