Ubuntuにtmuxをインストールして使用する方法:完全ガイド 2024

LightNode
By LightNode ·

はじめに

tmux(Terminal Multiplexer)は、Ubuntuやその他のUnix系システムでターミナルの使い勝手を向上させる強力なコマンドラインツールです。これを使用すると、1つのウィンドウ内で複数のターミナルセッションを作成でき、開発者、システム管理者、パワーユーザーにとって非常に便利なツールとなります。

tmuxとは?

tmuxは、以下の機能を提供するターミナルマルチプレクサです:

  • 1つのウィンドウ内で複数のターミナルセッションを作成
  • SSH接続が切断されてもプログラムを実行し続ける
  • ターミナルウィンドウを複数のペインに分割
  • 異なるターミナルセッション間をシームレスに切り替え
  • 他のユーザーとターミナルセッションを共有

tmuxを使用するメリット

Ubuntuのサーバーやローカルマシンで作業する際、tmuxは以下のような多くの利点を提供します:

  1. 永続的なセッション:SSH接続が切れても、ターミナルを誤って閉じても、作業はそのまま続きます。セッションを再接続すれば、作業を中断した場所から再開できます。

  2. 生産性の向上:複数のターミナルウィンドウを同時に操作しても、デスクトップが散らかることはありません。異なる作業を簡単に切り替え、作業内容を明確に把握できます。

  3. コラボレーションの強化:ターミナルセッションをチームメンバーと共有できるため、ペアプログラミングや共同でのトラブルシューティングに最適です。

システム要件

Ubuntuにtmuxをインストールする前に、以下の最小要件を確認してください:

  • Ubuntu 18.04 LTS以上
  • 基本的なターミナルの知識
  • インストールに必要なシステム権限(sudoアクセス)
  • 少なくとも50MBの空きディスクスペース

インストール方法

Ubuntuにtmuxをインストールするには、主に2つの方法があります:aptパッケージマネージャを使用する方法と、ソースからビルドする方法です。両方の方法について詳しく説明します。

aptパッケージマネージャを使用する

tmuxをインストールする最も簡単で推奨される方法は、Ubuntuのパッケージマネージャであるaptを使用する方法です。以下の手順でインストールできます:

# パッケージリストを更新
sudo apt update

# tmuxをインストール
sudo apt install tmux -y

# インストールを確認
tmux -V

この方法は依存関係を自動的に処理し、Ubuntuのリリースに合わせてテストされた安定版のtmuxを提供します。

ソースからビルドする

最新の機能や特定のバージョンが必要なユーザーには、ソースからビルドする方法があります:

# 必要な依存関係をインストール
sudo apt install git automake build-essential libevent-dev ncurses-dev

# ソースコードをクローン
git clone https://github.com/tmux/tmux.git
cd tmux

# ビルドとインストール
sh autogen.sh
./configure
make
sudo make install

バージョンの比較

インストール方法の違いを比較してみましょう:

  1. APTインストール:

    • メリット: インストールとアップグレードが簡単、安定版、依存関係の管理が自動で行われる
    • デメリット: 最新版ではない場合がある
    • Ubuntuリポジトリにおける現在のバージョン: 通常、最新の1~2バージョン遅れ
  2. ソースインストール:

    • メリット: 最新の機能にアクセスでき、コンパイルのカスタマイズが可能
    • デメリット: 依存関係の管理が手動で必要、インストール手順がやや複雑
    • 最新バージョン: 常に公式リポジトリと同じ最新版

インストール後は、次のコマンドでtmuxのバージョンを確認できます:

tmux -V

基本設定

tmuxの動作は、設定ファイルとさまざまな設定を通じてカスタマイズできます。ここでは、tmuxを自分のニーズに合わせて設定およびカスタマイズする方法を紹介します。

設定ファイルの場所

tmuxは、ホームディレクトリ内にある設定ファイルを探します:

# tmux設定ファイルを作成
touch ~/.tmux.conf

# お好きなテキストエディタで開く
nano ~/.tmux.conf

必須の設定

tmuxを使いやすくするための一般的な設定は以下の通りです:

# プレフィックスキーをCtrl+aに変更(デフォルトのCtrl+bより便利)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# マウスサポートを有効にする
set -g mouse on

# ウィンドウの番号付けを1から開始(デフォルトは0)
set -g base-index 1

# より簡単なウィンドウ分割キーを設定
bind-key v split-window -h
bind-key h split-window -v

# より簡単なウィンドウ移動キーを設定
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# 色を改善
set -g default-terminal "screen-256color"

# スクロールバックバッファのサイズを設定
set -g history-limit 10000

キーバインディングのカスタマイズ

tmuxのキーバインディングをカスタマイズして、ワークフローに合わせた使い勝手の良い操作を実現できます:

  1. 基本的なキーバインディングの構文

    bind-key key command
    bind key command
    
  2. 一般的なカスタムバインディング

    # 設定ファイルを再読み込み
    bind r source-file ~/.tmux.conf \; display "Config reloaded!"
    
    # パネルのクイックサイクリング
    unbind ^A
    bind ^A select-pane -t :.+
    
    # より直感的な分割コマンド
    bind | split-window -h
    bind - split-window -v
    

設定変更後は、tmuxセッションを再起動して変更を反映させることを忘れないようにしましょう。設定ファイルを更新した後、以下のコマンドでtmuxを再読み込みできます:

tmux source-file ~/.tmux.conf

tmuxの使い方

インストールと基本的な設定が完了した後、tmuxを効果的に使用する方法を学びましょう。このセクションでは、日常的に使うための基本的なコマンドと操作について説明します。

最初のセッションを開始する

tmuxセッションを開始および管理するための基本的なコマンドは以下の通りです:

# 新しいセッションを開始
tmux

# 名前付きの新しいセッションを開始
tmux new -s mysession

# セッション一覧を表示
tmux ls

# 既存のセッションに接続
tmux attach -t mysession

# 現在のセッションから切り離し(tmux内部で)
# プレフィックスキー(Ctrl+bまたはCtrl+a)を押してからd



## Getting Started with tmux

After installation and basic configuration, let's learn how to use tmux effectively. This section covers the essential commands and operations you'll need for daily use.

### Starting Your First Session

Here are the basic commands to start and manage tmux sessions:

```bash
# Start a new session
tmux

# Start a new named session
tmux new -s mysession

# List all sessions
tmux ls

# Attach to an existing session
tmux attach -t mysession

# Detach from current session (inside tmux)
# Press prefix key (Ctrl+b or Ctrl+a) then d

Basic Commands and Shortcuts

All tmux commands start with a prefix key (default: Ctrl+b). Here are essential shortcuts:

# Session Management
prefix + d    # Detach from session
prefix + s    # List sessions
prefix + $    # Rename current session

# Window Management
prefix + c    # Create new window
prefix + n    # Move to next window
prefix + p    # Move to previous window
prefix + ,    # Rename current window
prefix + w    # List windows

# Pane Operations
prefix + %    # Split pane vertically
prefix + "    # Split pane horizontally
prefix + o    # Switch to next pane
prefix + x    # Close current pane

Session Management

Sessions are the highest level of organization in tmux. Here's how to manage them effectively:

  1. Creating Sessions:

    # Create a new session with a specific name
    tmux new -s development
    
    # Create a new session with a specific working directory
    tmux new -s project -c ~/projects/myproject
    
  2. Managing Multiple Sessions:

    # Switch between sessions
    tmux switch -t...
    

tmuxの使い方

インストールと基本的な設定が完了した後、tmuxを効果的に使用する方法を学びましょう。このセクションでは、日常的に使うための基本的なコマンドと操作について説明します。

最初のセッションを開始する

tmuxセッションを開始および管理するための基本的なコマンドは以下の通りです:

# 新しいセッションを開始
tmux

# 名前付きの新しいセッションを開始
tmux new -s mysession

# セッション一覧を表示
tmux ls

# 既存のセッションに接続
tmux attach -t mysession

# 現在のセッションから切り離し(tmux内部で)
# プレフィックスキー(Ctrl+bまたはCtrl+a)を押してからd

基本的なコマンドとショートカット

tmuxのすべてのコマンドはプレフィックスキー(デフォルト:Ctrl+b)から始まります。以下は基本的なショートカットです:

セッション管理

prefix + d # セッションから切り離す prefix + s # セッション一覧を表示 prefix + $ # 現在のセッションの名前を変更

ウィンドウ管理

prefix + c # 新しいウィンドウを作成 prefix + n # 次のウィンドウに移動 prefix + p # 前のウィンドウに移動 prefix + , # 現在のウィンドウの名前を変更 prefix + w # ウィンドウ一覧を表示

ペイン操作

prefix + % # ペインを縦に分割 prefix + " # ペインを横に分割 prefix + o # 次のペインに切り替え prefix + x # 現在のペインを閉じる



### セッション管理

セッションはtmuxの最上位の組織単位です。以下に、効果的にセッションを管理する方法を説明します。

1. **セッションの作成**:
   ```bash
   # 特定の名前で新しいセッションを作成
   tmux new -s development
   
   # 特定の作業ディレクトリで新しいセッションを作成
   tmux new -s project -c ~/projects/myproject
  1. 複数のセッションの管理:

    # セッション間の切り替え
    tmux switch -t session_name
    
    # 特定のセッションを終了
    tmux kill-session -t session_name
    
    # 現在のセッションを除くすべてのセッションを終了
    tmux kill-session -a
    
  2. セッションのナビゲーション:

    • prefix + ( で前のセッションに移動
    • prefix + ) で次のセッションに移動
    • prefix + s でセッションリストを表示し、インタラクティブに選択

高度な機能

tmuxは、より高度なユーザー向けに生産性を大幅に向上させる強力な機能を提供します。これらの高度な機能をいくつか紹介します。

ウィンドウ管理

tmuxのウィンドウは、現代的なターミナルのタブに似た機能を持っています。以下は高度なウィンドウ操作です:

# 高度なウィンドウコマンド
prefix + .    # ウィンドウを別の番号に移動
prefix + f    # 名前でウィンドウを検索
prefix + &    # ウィンドウを終了
prefix + 0-9  # 番号でウィンドウを切り替え

# ウィンドウの位置を入れ替え
swap-window -s 2 -t 1  # ウィンドウ2とウィンドウ1を入れ替え
swap-window -t -1      # 現在のウィンドウを左に移動

ペイン操作

ペインを使用すると、ウィンドウを複数のセクションに分けることができます。以下は高度なペイン管理のテクニックです:

  1. ペインのサイズ変更:

    # プレフィックスキーを押した後に:
    Alt + 矢印キー    # 矢印の方向にペインをサイズ変更
    
    # またはプレフィックスキーを押しながら:
    Ctrl + 矢印キー   # より大きな増分でペインをサイズ変更
    
  2. 高度なペインナビゲーション:

    prefix + {    # 現在のペインを左に移動
    prefix + }    # 現在のペインを右に移動
    prefix + z    # ペインのズームを切り替え(最大化/復元)
    prefix + !    # ペインをウィンドウに変換
    
  3. ペインの同期:

    # ペイン同期を切り替え(すべてのペインにコマンドを送信)
    :setw synchronize-panes
    

コピー モードとスクロール

コピー モードを使用すると、スクロール、検索、テキストのコピーが可能です:

  1. コピー モードの開始とナビゲーション:

    prefix + [           # コピー モードに入る
    q                    # コピー モードを終了
    スペース              # 選択を開始
    Enter               # 選択したテキストをコピー
    
    # コピー モードでのナビゲーション:
    矢印キー            # カーソルを移動
    Page Up/Down        # ページをスクロール
    g                   # 上に移動
    G                   # 下に移動
    /                   # 前方検索
    ?                   # 後方検索
    n                   # 次の検索結果
    N                   # 前の検索結果
    
  2. 高度なコピー操作:

    # より良いコピー操作のためにviモードを有効にする
    set-window-option -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
    
  3. システムクリップボードとの統合:

    # Ubuntuでxclipを最初にインストール:
    sudo apt install xclip
    
    # .tmux.confに追加:
    bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -sel clip -i"
    

これらの高度な機能を組み合わせることで、強力なワークフローを作成できます。例えば、次のようなことが可能です:

  • 異なるサービスを監視するために複数のペインを設定
  • 複数のサーバーで同時にコマンドを実行するためにペインを同期
  • 異なる開発タスク用に複雑なウィンドウレイアウトを作成
  • tmuxセッションの自動バックアップを設定

ベストプラクティス

tmuxを効果的に使用することで、ワークフローと生産性が大幅に向上します。以下にいくつかの推奨されるアプローチとヒントを紹介します。

一般的なワークフロー

  1. 開発環境の設定:

    # 開発用の新しいセッションを作成
    tmux new -s dev
    
    # 一般的な開発レイアウト
    # 編集とターミナル用にウィンドウを分割
    tmux split-window -v -p 30  # エディタ70%、ターミナル30%
    
    # テスト/サーバー実行用にさらに分割
    tmux split-window -h        # ターミナルペインを水平方向に分割
    
  2. サーバー監視の設定:

    # 監視セッションを作成
    tmux new -s monitoring
    
    # 異なる監視タスク用にウィンドウを分割
    tmux split-window -h    # システムの統計情報用
    tmux split-window -v    # ログ用
    
    # 監視コマンドを実行
    # 最初のペイン:htop
    # 2番目のペイン:tail -f /var/log/syslog
    # 3番目のペイン:ネットワーク監視
    

生産性向上のためのヒント

  1. セッションの整理:

    • 説明的なセッション名を使用(例:client1backenddocs
    • 関連するタスクは同じセッション内の異なるウィンドウに保持
    • 一貫したウィンドウ命名規則を使用
    • より良い管理のために定期的にセッションを整理
  2. パフォーマンスの最適化:

    # .tmux.confに追加
    # エスケープタイムの遅延を減らす
    set -sg escape-time 0
    
    # 応答性を向上させる
    set -g status-interval 1
    
    # メモリ問題を防ぐためにセッション履歴の制限
    set -g history-limit 50000
    
  3. 自動セットアップスクリプト:

    #!/bin/bash
    # dev-setup.shとして保存
    
    # デタッチ状態で新しいセッションを作成
    tmux new-session -d -s development
    
    # ウィンドウとペインを設定
    tmux rename-window -t development:1 'editor'
    tmux send-keys -t development:1 'vim' C-m
    
    tmux new-window -t development:2 -n 'server'
    tmux send-keys -t development:2 'npm run dev' C-m
    
    # セッションにアタッチ
    tmux attach -t development
    

他のツールとの統合

  1. バージョン管理との統合:

    • git操作用の専用ウィンドウを作成
    • 複数のリポジトリを管理するためにペインの同期を使用
    • 自動ステータスチェックを設定
  2. ターミナルマルチプレクサのベストプラクティス:

    # .bashrc または .zshrc に追加
    # SSH接続時に自動的に tmux セッションに接続
    if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then
        tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux
    fi
    
  3. リモート開発:

    • ローカル/リモート作業用にネストされた tmux セッションを使用
    • ローカル/リモートセッション用に異なるステータスバーの色を設定
    • ネストされたセッションのために異なるプレフィックスキーを設定
# ネストされたセッション用 (.tmux.conf)
bind-key -n C-a send-prefix    # 内部セッション用
set -g status-bg colour40      # ローカル用の緑
set -g status-bg colour160     # リモート用の赤
Install Tmux on Ubuntu

よくある質問 (FAQ)

Q1: tmuxを終了するにはどうすれば良いですか?

# 方法 1: tmuxを完全に終了
exit                  # tmuxウィンドウで入力
# または
prefix + d            # セッションを保持したまま現在のセッションから切断

# 方法 2: すべてのセッションを強制終了
tmux kill-server

Q2: マウススクロールが機能しないのはなぜですか?

新しいバージョンのtmuxでは、設定ファイルでマウスサポートを有効にする必要があります:

# ~/.tmux.conf に追加
set -g mouse on

Q3: tmuxでテキストをコピーするにはどうすればよいですか?

  1. マウスを使用する場合(マウスサポートが有効な場合):

    • テキストを選択
    • システムのクリップボードショートカットを使用
  2. キーボードを使用する場合:

    prefix + [        # コピー・モードに入る
    Space            # 選択を開始
    Enter           # 選択をコピー
    prefix + ]      # 貼り付け
    

Q4: 失われたtmuxセッションを復元するにはどうすればよいですか?

# すべてのセッションをリストする
tmux ls

# 最後のセッションに再接続
tmux attach

# 特定のセッションに接続
tmux attach -t session_name

Q5: tmuxでペインのサイズを変更するにはどうすればよいですか?

# プレフィックスキー + 矢印キーでペインをリサイズ
prefix + Up    # 現在のペインを上に拡大
prefix + Down  # 現在のペインを下に拡大
prefix + Left  # 現在のペインを左に拡大
prefix + Right # 現在のペインを右に拡大

Q6: 設定変更を適用するにはどうすればよいですか?

# 方法1: tmux内でリロード
prefix + :
source-file ~/.tmux.conf

# 方法2: ターミナルからリロード
tmux source-file ~/.tmux.conf

Q7: ペイン間で入力を同期させるにはどうすればよいですか?

# tmuxコマンドモードで
:setw synchronize-panes on

# 同期をオフにする
:setw synchronize-panes off

Q8: なぜ色が正しく表示されないのでしょうか?

~/.tmux.confに以下の行を追加してください:

# 256色サポートを有効にする
set -g default-terminal "screen-256color"

# 真の色サポートを有効にする
set-option -sa terminal-overrides ",xterm*:Tc"

Q9: tmuxセッションを保存して復元するにはどうすればよいですか?

tmux-resurrectプラグインを使用できます:

# tmuxプラグインマネージャーをインストール
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# .tmux.conf に追加:
set -g @plugin 'tmux-plugins/tmux-resurrect'

# セッションを保存
prefix + Ctrl-s

# セッションを復元
prefix + Ctrl-r

Q10: ステータスバーの外観を変更するにはどうすればよいですか?

# ~/.tmux.conf に追加
# ステータスバーの背景色を変更
set -g status-bg black

# ステータスバーの前景色を変更
set -g status-fg white

# 現在のウィンドウのスタイルを変更
set-window-option -g window-status-current-style bg=red,fg=white,bold

Q11: ネストされたtmuxセッションを扱うにはどうすればよいですか?

# ネストされたセッションで異なるプレフィックスを使用するために .tmux.conf に追加
bind-key -n C-a send-prefix    # 内部セッション用
set -g status-bg blue          # ネストされたセッション用に異なる色を設定

Q12: tmuxでファンクションキーが機能しないのはなぜですか?

# ~/.tmux.conf に追加
set-option -g xterm-keys on
set-window-option -g xterm-keys on