0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[環境構築] bashからzsh + tmuxに乗り換えて開発環境を快適にする

0
Last updated at Posted at 2026-06-15

この記事でわかること

  • Ubuntu 24.04 にzshとtmuxをインストールする方法
  • デフォルトシェルをbashからzshに切り替える手順
  • Oh My Zshでzshを使いやすくカスタマイズする方法
  • tmuxの基本操作とセッション管理の考え方
  • zsh + tmuxを組み合わせた快適な開発環境の構築方法

はじめに

自作PCにUbuntu 24.04をインストールし、開発環境をゼロから構築しています。

OSを入れて最初に触れるのがターミナルとシェルです。Ubuntuのデフォルトシェルであるbashは十分に実用的ですが、日常的にターミナルで作業をするなら、zshtmuxを導入することで操作性が大きく変わります。

この記事では、bashからzsh + tmuxに乗り換える手順を、インストールから設定・カスタマイズまで一通り記録します。

前提・環境

項目 内容
OS Ubuntu 24.04.4 LTS (Noble Numbat)
CPU Intel Core Ultra 7 265K
メモリ 32GB
アーキテクチャ x86_64
現在のシェル bash(Ubuntuデフォルト)

本記事は自作PCにUbuntuをクリーンインストールした直後の、デフォルト状態からの構築手順を記録しています。WSLやDocker環境でも基本的な手順は同じですが、一部の設定が異なる場合があります。

bashとzshの比較

機能 bash zsh
コマンド補完 基本的な補完 高度なタブ補完(候補の一覧表示・選択)
スペル修正 なし 自動修正の提案
プラグイン管理 手動設定 Oh My Zshなどのフレームワークで簡単管理
テーマ 手動設定 100以上のテーマを簡単に切り替え可能
履歴共有 ターミナル間で非共有 複数ターミナル間でリアルタイム共有
globbing 基本的 拡張globbing(**/*.py などの再帰検索)

zsh + tmux

tmuxは「ターミナルマルチプレクサ」と呼ばれるツールです。1つのターミナルウィンドウの中に複数のペインやウィンドウを作成し、SSH切断後もセッションを維持できます。

zshで「シェルそのもの」を強化し、tmuxで「ターミナルの使い方」を強化する。この2つを組み合わせることで、開発効率が大きく向上します。

事前準備

zshのプラグイン導入やOh My Zshのインストールに curlgit が必要です。Ubuntu 24.04にはデフォルトで入っていない場合があるため、先にインストールしておきます。

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git

zshのインストールとセットアップ

zshをインストールする

sudo apt install -y zsh

インストールされたことを確認します。

zsh --version

以下のように表示されれば成功です。

zsh 5.9 (x86_64-ubuntu-linux-gnu)

デフォルトシェルをzshに変更する

chshコマンドでログインシェルをzshに切り替えます。

chsh -s $(which zsh)

chshの反映にはログアウト→ログインが必要です。変更後、一度ログアウトしてから再度ログインしてください。

再ログイン後、シェルが切り替わったことを確認します。

echo $SHELL
# /usr/bin/zsh

zsh初回起動時の設定メニューについて

初回起動時に「New zsh user」向けの設定メニューが表示される場合があります。

  • (0) — 空の.zshrcを作成する(おすすめ:後でOh My Zshが上書きします
  • (1) — 対話形式で基本設定を行う
  • (2) — 推奨設定の.zshrcを自動生成する
  • (q) — 何もせずに終了する

ここでは (0) を選択 してください。このあとOh My Zshをインストールすると.zshrcが自動生成されるため、手動で設定する必要はありません。

Oh My Zshをインストールする

Oh My Zshは、zshの設定を簡単に管理できるフレームワークです。テーマやプラグインをコマンド1つで導入できます。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

インストールが完了すると、プロンプトの見た目が変わります。これがOh My Zshのデフォルトテーマ(robbyrussell)です。

テーマを変更する

Oh My Zshには100以上のテーマが同梱されています。テーマを変更するには、~/.zshrcZSH_THEME を編集します。

おすすめのテーマをいくつか紹介します。

テーマ名 特徴
robbyrussell デフォルト。シンプルで軽量
agnoster Gitブランチ表示が見やすい。Powerlineフォント必要
dst ディレクトリパスがフル表示される
bira ユーザー名・ホスト名・パスが2行表示

ここでは agnoster を設定してみます。

~/.zshrc
ZSH_THEME="agnoster"

変更を反映します。

source ~/.zshrc

agnoster テーマを正しく表示するには、Powerline対応フォントが必要です。以下のコマンドでインストールできます。

sudo apt install -y fonts-powerline

インストール後、ターミナルエミュレータ(GNOME Terminalなど)の設定画面でフォントを「◯◯ for Powerline」や「Nerd Font」系に変更してください。

プラグインを追加する

Oh My Zshの真価はプラグインにあります。以下の3つは特におすすめです。

プラグイン名 機能
zsh-autosuggestions コマンド履歴から候補をグレー表示で提案してくれる
zsh-syntax-highlighting コマンドの構文をリアルタイムで色分けしてくれる
git Gitのエイリアスを多数追加(Oh My Zshに同梱済み)

まず、外部プラグインをインストールします。

# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

次に、~/.zshrc のプラグイン設定を編集します。

~/.zshrc
plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
)

変更を反映します。

source ~/.zshrc

これで以下の機能が有効になります。

  • autosuggestions: コマンドを打ち始めると、過去の履歴から候補がグレー表示で表示されます。(右矢印キー)を押すと候補がそのまま入力されます。
  • syntax-highlighting: 正しいコマンドは緑色、存在しないコマンドは赤色でリアルタイムに色分けされます。Enterを押す前にタイプミスに気づけるので非常に便利です。

tmuxのインストールとセットアップ

zshの設定が完了したところで、次はtmuxを導入します。

tmuxをインストールする

sudo apt install -y tmux

バージョンを確認します。

tmux -V

以下のように表示されます。

tmux 3.4

バージョン表記はリポジトリの状態によって tmux 3.4tmux next-3.4 のように表示される場合があります。3.4系であれば本記事の内容はそのまま適用できます。

tmuxの基本概念を理解する

tmuxを使いこなすには、セッション・ウィンドウ・ペイン の3つの概念を理解する必要があります。

概念 説明 イメージ
セッション tmuxの最上位単位。プロジェクトごとに作ると便利 「作業デスク」全体
ウィンドウ セッション内のタブ。画面全体を使う ブラウザの「タブ」
ペイン ウィンドウ内の分割領域 画面を左右・上下に分割したそれぞれ

tmuxの基本操作

tmuxの操作は、プレフィックスキー(デフォルトは Ctrl+b)に続けてコマンドキーを押す方式です。

この記事では、後ほどプレフィックスキーを Ctrl+a にカスタマイズします。カスタマイズ前の説明では Ctrl+b、カスタマイズ後の説明では Ctrl+a を使用しますので、ご自身の設定に合わせて読み替えてください。

セッション操作

# 新しいセッションを開始(名前付き)
tmux new-session -s myproject

# セッションからデタッチ(tmux内で)
# Ctrl+b → d

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

# セッションに再接続(アタッチ)
tmux attach -t myproject

# セッションを終了
tmux kill-session -t myproject

デタッチとアタッチ がtmuxの最大の特徴です。デタッチすると、tmux内で実行中のプロセスはバックグラウンドで動き続けます。SSH接続が切れてしまった場合でも、再接続して tmux attach するだけで作業を再開できます。

ウィンドウ操作

すべての操作はtmux内で行います。Ctrl+b のあとに以下のキーを押します。

キー 操作
c 新しいウィンドウを作成
n 次のウィンドウに移動
p 前のウィンドウに移動
09 番号指定でウィンドウに移動
, 現在のウィンドウの名前を変更
& 現在のウィンドウを閉じる

ペイン操作

キー 操作
% 画面を左右に分割
" 画面を上下に分割
矢印キー ペイン間を移動
x 現在のペインを閉じる
z 現在のペインを最大化 / 元に戻す(ズームトグル)
Ctrl+矢印 ペインのサイズを調整

実践:よくある開発レイアウトを作ってみる

実際に、開発でよく使うレイアウトを作ってみましょう。

# 「dev」という名前のセッションを作成
tmux new-session -s dev

tmuxに入ったら、以下の操作で3ペイン構成を作ります。

1. Ctrl+b → %       左右に分割
2. Ctrl+b → "       右側をさらに上下に分割
3. Ctrl+b → ←       左ペインに移動

これで以下のようなレイアウトになります。

+------------------+-----------+
|                  | Terminal  |
|    Editor        +-----------+
|    (main work)   | Log/Watch |
+------------------+-----------+

左ペインでコードを書き、右上でコマンドを実行し、右下でログを監視する。このような使い方ができます。

tmuxの設定をカスタマイズする

デフォルトのtmux設定をもっと使いやすくカスタマイズします。
~/.tmux.conf に以下を記述します。

~/.tmux.conf
# -----------------------------------
# プレフィックスキーの変更
# -----------------------------------
# Ctrl+b → Ctrl+a に変更(片手で押しやすい)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# -----------------------------------
# ペイン分割のキーバインド変更
# -----------------------------------
# | で左右分割、- で上下分割(直感的に覚えやすい)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %

# -----------------------------------
# ペイン移動をVim風に
# -----------------------------------
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# -----------------------------------
# マウス操作を有効化
# -----------------------------------
set -g mouse on

# -----------------------------------
# ウィンドウ・ペイン番号を1始まりに
# -----------------------------------
set -g base-index 1
setw -g pane-base-index 1

# -----------------------------------
# 256色・True Color対応
# -----------------------------------
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

# -----------------------------------
# ステータスバーの外観
# -----------------------------------
set -g status-position top
set -g status-style "bg=#1e1e2e,fg=#cdd6f4"
setw -g window-status-current-style "bg=#89b4fa,fg=#1e1e2e,bold"

# -----------------------------------
# ペインの境界線
# -----------------------------------
set -g pane-border-style "fg=#45475a"
set -g pane-active-border-style "fg=#89b4fa"

# -----------------------------------
# その他の便利設定
# -----------------------------------
# Escキーの遅延を解消(Vimユーザー向け)
set -sg escape-time 0

# スクロールバッファを増やす
set -g history-limit 10000

# 設定ファイルの再読み込みショートカット
bind r source-file ~/.tmux.conf \; display "Config Reloaded!"

# デフォルトシェルをzshに
set -g default-shell /usr/bin/zsh

設定ファイルをtmux内で反映するには、以下を実行します。

tmux source-file ~/.tmux.conf

上記の設定を入れた後は、Ctrl+a → r で手軽に再読み込みできます。

プレフィックスキーを Ctrl+a に変更した場合、以降のすべてのtmux操作のプレフィックスが Ctrl+a になります。記事前半で紹介した Ctrl+b の操作は、すべて Ctrl+a に読み替えてください。

カスタマイズ後のキーバインドをまとめます。

操作 カスタマイズ前 カスタマイズ後
プレフィックス Ctrl+b Ctrl+a
左右分割 Ctrl+b → % Ctrl+a → |
上下分割 Ctrl+b → " Ctrl+a → -
ペイン移動 Ctrl+b → 矢印 Ctrl+a → h/j/k/l
設定再読み込み Ctrl+a → r

実際にzsh + tmuxを組み合わせる

これまでの設定でzshとtmuxはそれぞれ単独で動作する状態です。ここからは、2つを連携させてさらに快適にします。

ターミナル起動時にtmuxを自動で起動する

毎回 tmux コマンドを打つのは面倒です。~/.zshrc の末尾に以下を追加すると、ターミナルを開くだけでtmuxが起動します。

~/.zshrc
# tmuxの自動起動
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
    tmux attach-session -t default || tmux new-session -s default
fi

このスクリプトは以下のように動作します。

  1. tmux コマンドが存在することを確認する
  2. 現在すでにtmux内でないことを確認する(二重起動防止)
  3. default という名前のセッションがあればアタッチ、なければ新規作成する

tmux自動起動の注意点

以下のケースでは、tmux自動起動が意図しない挙動を引き起こす場合があります。

  • VS Code統合ターミナル: VS Codeのターミナルでtmuxが起動すると、一部の拡張機能と競合する場合があります
  • scp / rsync: リモートでtmuxが自動起動すると、ファイル転送が失敗する場合があります

このような問題が起きた場合は、条件分岐で除外してください。

# 改良版:特定の環境では自動起動しない
if command -v tmux &> /dev/null && [ -z "$TMUX" ] && [ -z "$VSCODE_RESOLVING_ENVIRONMENT" ]; then
    tmux attach-session -t default || tmux new-session -s default
fi

開発プロジェクト用のtmuxセッションをスクリプト化する

よく使うレイアウトは、シェルスクリプトにしておくと一発で再現できます。

~/bin/dev-session.sh
#!/usr/bin/env bash
# ※ bashを指定しているのは、シェルスクリプトの移植性を考慮しているためです。
#    zsh以外の環境でも動作するようにしています。

SESSION="dev"

# 既存セッションがあればアタッチ
tmux has-session -t $SESSION 2>/dev/null
if [ $? -eq 0 ]; then
    tmux attach -t $SESSION
    exit 0
fi

# 新しいセッションを作成
tmux new-session -d -s $SESSION -n editor

# ウィンドウ1: エディタ + ターミナル
tmux split-window -h -t $SESSION:1
tmux split-window -v -t $SESSION:1.2
tmux send-keys -t $SESSION:1.1 'nvim .' C-m

# ウィンドウ2: Git操作
tmux new-window -t $SESSION -n git
tmux send-keys -t $SESSION:2 'git status' C-m

# ウィンドウ3: サーバー / ログ監視
tmux new-window -t $SESSION -n server

# ウィンドウ1にフォーカスを戻す
tmux select-window -t $SESSION:1
tmux select-pane -t $SESSION:1.1

# セッションにアタッチ
tmux attach -t $SESSION

実行権限を付与して使用します。

mkdir -p ~/bin
chmod +x ~/bin/dev-session.sh
~/bin/dev-session.sh

ハマりポイント

1. Powerlineフォントが表示されない

agnoster テーマなどを使用した際にプロンプトが文字化けする場合は、ターミナルエミュレータ側のフォント設定を確認してください。

# Powerlineフォントのインストール
sudo apt install -y fonts-powerline

# フォントキャッシュの更新
fc-cache -fv

インストールだけでは反映されません。ターミナルエミュレータ(GNOME Terminalなど)の 設定 → プロファイル → フォント から、「◯◯ for Powerline」や「Nerd Font」系のフォントに変更してください。

2. tmux内で色がおかしい

tmux内でVimやlsの色表示がおかしい場合は、~/.tmux.conf に以下が設定されているか確認してください。

~/.tmux.conf
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

3. tmux内でコピー&ペーストができない

マウスモードが有効な場合、通常のドラッグ選択ではtmuxがコピーをインターセプトします。Shift キーを押しながら選択すると、ターミナルのネイティブなコピー機能が使えます。

tmuxのコピーモードを使う場合は、以下の手順で操作します。

手順 キー操作 説明
1 Ctrl+a → [ コピーモードに入る
2 Space 選択開始
3 矢印キー で範囲選択 選択範囲を広げる
4 Enter コピー(バッファに格納)
5 Ctrl+a → ] ペースト

設定ファイルの全体像

個別に設定を追加してきましたので、最終的なファイルの全体像をまとめて掲載します。

~/.zshrc(最終版・クリックで展開)
~/.zshrc
# Oh My Zsh の設定
export ZSH="$HOME/.oh-my-zsh"

# テーマ
ZSH_THEME="agnoster"

# プラグイン
plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
)

source $ZSH/oh-my-zsh.sh

# --- ユーザー設定 ---

# エイリアス(お好みで追加)
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# tmuxの自動起動
if command -v tmux &> /dev/null && [ -z "$TMUX" ] && [ -z "$VSCODE_RESOLVING_ENVIRONMENT" ]; then
    tmux attach-session -t default || tmux new-session -s default
fi
~/.tmux.conf(最終版・クリックで展開)
~/.tmux.conf
# プレフィックスキー: Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# ペイン分割: | で左右、- で上下
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %

# ペイン移動: Vim風
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# マウス操作
set -g mouse on

# 番号を1始まりに
set -g base-index 1
setw -g pane-base-index 1

# 色設定
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

# ステータスバー
set -g status-position top
set -g status-style "bg=#1e1e2e,fg=#cdd6f4"
setw -g window-status-current-style "bg=#89b4fa,fg=#1e1e2e,bold"

# ペイン境界線
set -g pane-border-style "fg=#45475a"
set -g pane-active-border-style "fg=#89b4fa"

# その他
set -sg escape-time 0
set -g history-limit 10000
bind r source-file ~/.tmux.conf \; display "Config Reloaded!"
set -g default-shell /usr/bin/zsh

まとめ

  • zsh をインストールし、chsh でデフォルトシェルに設定しました
  • Oh My Zsh でテーマ(agnoster)とプラグイン(autosuggestions, syntax-highlighting)を導入しました
  • tmux をインストールし、セッション / ウィンドウ / ペインの基本操作を覚えました
  • ~/.tmux.conf でプレフィックスキーやペイン分割のキーバインド、見た目をカスタマイズしました
  • zshとtmuxを組み合わせて、ターミナル起動時に自動でtmuxセッションに入る設定を行いました

bashからの移行は思ったよりハードルが低いです。まずはzshをインストールして数日使ってみて、慣れてきたらtmuxを導入するという順番でもよいでしょう。

万が一zshが合わなかった場合は、chsh -s /bin/bash でいつでもbashに戻せます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?