ターミナルを複数ペインに分割して同時に操作したいとき、Rust製マルチプレクサ Zellij は設定なしですぐ使える操作ガイドを画面下部に表示してくれます。しかし実際に業務で使い込むと「CLIのサブコマンドが把握しきれない」「モード別のキーバインドを一覧で確認したい」という場面が出てきます。
ここでは Zellij のコマンド体系を CLIサブコマンド・モード別キーバインド・アクション定義 の3つの軸で整理し、tmux との操作比較やカスタマイズ例まで含めて解説します。
Zellij の概要と基本構造
Zellij は Rust で実装されたターミナルマルチプレクサです。GitHub で 29,000 以上の Star を獲得しており(出典: GitHub)、MIT ライセンスで公開されています。最新の安定版は v0.43.1(2025年8月リリース)です。
tmux や screen と同じ「セッション → タブ → ペイン」の階層構造を持ちますが、以下の点で異なります。
| 観点 | Zellij | tmux |
|---|---|---|
| 実装言語 | Rust | C |
| 設定形式 | KDL (.kdl) | 独自形式 (.tmux.conf) |
| 操作ガイド | 画面下部にリアルタイム表示 | なし(暗記前提) |
| プラグイン | WebAssembly(WASM)対応 | なし |
| フローティングペイン | 標準搭載 | tmux 3.3+ で popup |
| プレフィックスキー | モード切替方式 | Ctrl+b(デフォルト) |
CLI サブコマンド一覧
zellij コマンドには以下のサブコマンドがあります。引数なしで実行すると新しいセッションが起動します。
セッション管理
| サブコマンド | 短縮形 | 機能 |
|---|---|---|
attach <session-name> | a | 既存セッションに接続 |
list-sessions | ls | 実行中セッション名の一覧表示 |
kill-session <target> | k | 指定セッションを終了 |
kill-all-sessions | ka | 全セッションを終了 |
# セッション一覧の表示
zellij ls
# 名前付きセッション作成
zellij -s my-project
# 既存セッションへの再接続
zellij attach my-project
# セッション削除
zellij kill-session my-project
セットアップ・設定
| サブコマンド | 機能 |
|---|---|
setup --dump-config | デフォルト設定ファイルを標準出力に出力 |
setup --dump-layout <name> | 指定レイアウトファイルを標準出力に出力 |
setup --generate-completion <shell> | シェル補完スクリプトを生成(bash/zsh/fish) |
setup --check | 設定ファイルの構文チェック |
setup --clean | デフォルト設定で起動 |
options | 起動時の動作オプションを変更 |
# デフォルト設定の書き出し
zellij setup --dump-config > ~/.config/zellij/config.kdl
# zsh 補完の生成
zellij setup --generate-completion zsh > ~/.zfunc/_zellij
# レイアウト指定で起動
zellij --layout my-layout
zellij run(コマンド実行)
新しいペインでコマンドを直接実行するサブコマンドです。短縮形は zr です。
# フローティングペインでhtopを起動
zellij run -f -- htop
# 下方向のペインでログを監視(終了時にペインを自動で閉じる)
zellij run -d down -c -- tail -f /var/log/syslog
# 名前付きペインでdevサーバーを起動
zellij run -n "dev-server" -- npm run dev
| オプション | 短縮形 | 機能 |
|---|---|---|
--close-on-exit | -c | コマンド終了時にペインを自動で閉じる |
--cwd <path> | なし | 作業ディレクトリを指定 |
--direction <dir> | -d | ペインの配置方向(down/right) |
--floating | -f | フローティングペインとして開く |
--height <size> | なし | ペインの高さを指定 |
--width <size> | なし | ペインの幅を指定 |
--in-place | -i | 現在のペインを置き換えて実行 |
--name <name> | -n | ペインに名前を付与 |
--start-suspended | -s | 中断状態でペインを開く(Enterで実行開始) |
zellij action(アクション実行)
実行中のセッションに対して外部からアクションを送信するサブコマンドです。シェルスクリプトやキーバインドカスタマイズから Zellij を操作する際に使います。
# 新しいペインを作成
zellij action new-pane
# 指定番号のタブへ移動
zellij action go-to-tab 3
# ペインにテキストを書き込む
zellij action write-chars "echo hello"
# 現在のレイアウトをダンプ
zellij action dump-layout
主要なアクション一覧:
| カテゴリ | アクション | 機能 |
|---|---|---|
| ペイン | new-pane | 新規ペイン作成 |
| ペイン | close-pane | ペインを閉じる |
| ペイン | move-focus <方向> | フォーカス移動 |
| ペイン | move-pane <方向> | ペインの位置移動 |
| ペイン | toggle-fullscreen | フルスクリーン切替 |
| ペイン | toggle-floating-panes | フローティング切替 |
| ペイン | toggle-pane-embed-or-floating | 埋め込み/フローティング切替 |
| ペイン | rename-pane <名前> | ペイン名変更 |
| タブ | new-tab | 新規タブ作成 |
| タブ | close-tab | タブを閉じる |
| タブ | go-to-tab <番号> | 番号指定でタブ移動 |
| タブ | go-to-next-tab | 次のタブへ移動 |
| タブ | go-to-previous-tab | 前のタブへ移動 |
| タブ | rename-tab <名前> | タブ名変更 |
| スクロール | scroll-up / scroll-down | 上下スクロール |
| スクロール | half-page-scroll-up / half-page-scroll-down | 半ページスクロール |
| スクロール | page-scroll-up / page-scroll-down | 1ページスクロール |
| その他 | write-chars <文字列> | ペインへの文字列入力 |
| その他 | dump-screen <ファイル> | ペイン内容をファイル出力 |
| その他 | dump-layout | 現在のレイアウトを出力 |
| その他 | switch-mode <モード> | モード切替 |
| その他 | edit <ファイル> | ファイルをエディタで開く |
zellij plugin(プラグイン起動)
プラグインを新しいペインで起動するサブコマンドです。
# ファイルマネージャー(strider)をフローティングで起動
zellij plugin -f -- zellij:strider
# セッションマネージャーを起動
zellij plugin -- zellij:session-manager
# 外部プラグインをURLから読み込み
zellij plugin -- file:/path/to/my-plugin.wasm
| オプション | 短縮形 | 機能 |
|---|---|---|
--configuration <設定> | -c | プラグイン設定を指定 |
--floating | -f | フローティングペインとして起動 |
--in-place | -i | 現在のペインを置き換えて起動 |
--skip-plugin-cache | -s | プラグインキャッシュをスキップ |
--width <size> | なし | 幅を指定 |
--height <size> | なし | 高さを指定 |
グローバルフラグ
全サブコマンドで使用できるフラグです。
| フラグ | 短縮形 | 機能 |
|---|---|---|
--help | -h | ヘルプメッセージの表示 |
--version | -V | バージョン情報の表示 |
--debug | なし | デバッグ情報の収集 |
--layout <path> | -l | レイアウトファイルを指定して起動 |
--session <name> | -s | セッション名を付けて起動 |
--config <path> | -c | 設定ファイルパスを指定 |
--config-dir <path> | なし | 設定ディレクトリパスを指定 |
モード体系の全体像
Zellij は モードベース の操作体系を採用しています。vim と同様に、現在のモードによって同じキーが異なる操作にマッピングされます。
利用可能なモード一覧
| モード | デフォルト切替キー | 用途 |
|---|---|---|
| Normal | Esc / 各モードから自動復帰 | 通常入力 + クイックアクション |
| Locked | Ctrl+g | Zellij のキーバインドを無効化(Neovim 等との競合回避) |
| Pane | Ctrl+p | ペインの作成・移動・閉じるなど |
| Tab | Ctrl+t | タブの作成・切替・リネームなど |
| Resize | Ctrl+n | ペインサイズの変更 |
| Move | Ctrl+h | ペイン位置の入れ替え |
| Scroll | Ctrl+s | スクロール操作・テキスト検索 |
| Search | Scroll モード内から遷移 | テキスト検索 |
| EnterSearch | 検索文字入力用 | 検索クエリの入力 |
| RenameTab | Tab モードから遷移 | タブ名の変更 |
| RenamePane | Pane モードから遷移 | ペイン名の変更 |
| Session | Ctrl+o | セッション管理・デタッチ |
| Tmux | Ctrl+b | tmux 互換操作 |
Normal モードのクイックアクション
Normal モードではモード切替なしで直接実行できるショートカットがあります。
| キー | 操作 |
|---|---|
| Alt+n | 新規ペイン(水平方向) |
| Alt+矢印キー / Alt+h/j/k/l | ペイン間フォーカス移動 |
| Alt+[/] | タブ切替(前/次) |
| Alt+= / Alt+- | ペインサイズの拡大/縮小 |
| Alt+f | フローティングペインの表示切替 |
| Alt+i | 次のレイアウトへスワップ |
モード別キーバインド詳細
Pane モード(Ctrl+p)
ペインの作成・分割・移動に関する操作をまとめたモードです。
| キー | 操作 |
|---|---|
| n | 新規ペイン(デフォルト方向) |
| d | 下方向に分割して新規ペイン |
| r | 右方向に分割して新規ペイン |
| x | フォーカス中のペインを閉じる |
| f | フルスクリーン切替 |
| w | フローティングペイン切替 |
| e | 埋め込み/フローティング切替 |
| s | スタックペイン作成 |
| c | ペイン名変更 |
| i | ペインのピン留め切替 |
| 矢印キー / h/j/k/l | フォーカス移動 |
Tab モード(Ctrl+t)
タブの管理を行うモードです。
| キー | 操作 |
|---|---|
| n | 新規タブ作成 |
| x | 現在のタブを閉じる |
| r | タブ名変更 |
| 左右矢印 / h/l | タブ切替(前/次) |
| 1-9 | 番号指定でタブ移動 |
| Tab | 直前のタブへ切替 |
| s | タブの同期モード切替 |
| b | フォーカス中のペインを新規タブに分離 |
| ] | ペインを右隣のタブへ分離 |
| [ | ペインを左隣のタブへ分離 |
Resize モード(Ctrl+n)
ペインのサイズを変更するモードです。
| キー | 操作 |
|---|---|
| 矢印キー / h/j/k/l | フォーカス方向にリサイズ(拡大) |
| H/J/K/L | 指定方向にリサイズ(縮小) |
| = / + | 全体リサイズ拡大 |
| - | 全体リサイズ縮小 |
Move モード(Ctrl+h)
ペインの位置を入れ替えるモードです。
| キー | 操作 |
|---|---|
| 矢印キー / h/j/k/l | 指定方向にペインを移動 |
| n / Tab | 次のペイン位置と入替 |
| p | 前のペイン位置と入替 |
Scroll モード(Ctrl+s)
スクロールバッファの操作とテキスト検索を行うモードです。
| キー | 操作 |
|---|---|
| j / Down | 1行下スクロール |
| k / Up | 1行上スクロール |
| d / Ctrl+d | 半ページ下スクロール |
| u / Ctrl+u | 半ページ上スクロール |
| f / PageDown | 1ページ下スクロール |
| b / PageUp | 1ページ上スクロール |
| s | テキスト検索モードへ遷移 |
| e | デフォルトエディタでバッファを開く |
Session モード(Ctrl+o)
セッションの管理やZellijの終了を行うモードです。
| キー | 操作 |
|---|---|
| d | セッションをデタッチ(バックグラウンド化) |
| w | セッションマネージャーを開く |
| c | 設定画面を開く |
| p | プラグインマネージャーを開く |
| l | レイアウトマネージャーを開く |
Locked モード(Ctrl+g)
Zellij のキーバインドをすべて無効化するモードです。Neovim や Helix など、Ctrl キーを多用するエディタとの併用時に便利です。
Ctrl+g を再度押すと Normal モードに復帰します。
Tmux モード(Ctrl+b)
tmux に慣れたユーザー向けの互換モードです。Ctrl+b のプレフィックスキーに続けて操作を入力します。
| キー | 操作 | tmux 相当 |
|---|---|---|
| " | 水平分割 | Ctrl+b " |
| % | 垂直分割 | Ctrl+b % |
| x | ペインを閉じる | Ctrl+b x |
| z | フルスクリーン切替 | Ctrl+b z |
| c | 新規タブ | Ctrl+b c |
| , | タブ名変更 | Ctrl+b , |
| p / n | 前/次のタブ | Ctrl+b p/n |
| d | デタッチ | Ctrl+b d |
| o | 次のペインへ移動 | Ctrl+b o |
Search モード(Scroll モード内から遷移)
Scroll モードで s を押すと Search モードに入り、テキスト検索が可能です。
| キー | 操作 |
|---|---|
| n | 次の検索結果へ移動 |
| p | 前の検索結果へ移動 |
| c | 大文字小文字の区別を切替 |
| w | 折り返し検索の切替 |
| o | 単語全体一致の切替 |
全モード共通のショートカット(Locked モード除外)
Locked モード以外の全モードで使用できる共通キーバインドです。
| キー | 操作 |
|---|---|
| Ctrl+g | Locked モードに切替 |
| Ctrl+q | Zellij を終了 |
| Alt+f | フローティングペインの表示切替 |
| Alt+n | 新規ペイン作成 |
| Alt+h / Alt+Left | フォーカスを左に移動 |
| Alt+l / Alt+Right | フォーカスを右に移動 |
| Alt+j / Alt+Down | フォーカスを下に移動 |
| Alt+k / Alt+Up | フォーカスを上に移動 |
| Alt+i / Alt+o | タブを左/右に移動 |
| Alt+= / Alt++ | リサイズ拡大 |
| Alt+- | リサイズ縮小 |
| Alt+[ / Alt+] | レイアウトを前/次に切替 |
アクション定義リファレンス
config.kdl でキーバインドに割り当てられるアクションの一覧です。
ペイン操作アクション
| アクション | 引数 | 機能 |
|---|---|---|
NewPane | 方向(Down/Right) | 新規ペインの作成 |
CloseFocus | なし | フォーカス中のペインを閉じる |
MoveFocus | 方向 | フォーカスの移動 |
MovePane | 方向 | ペインの移動 |
FocusNextPane | なし | 次のペインへ移動 |
FocusPreviousPane | なし | 前のペインへ移動 |
ToggleFocusFullscreen | なし | 全画面表示の切替 |
TogglePaneFrames | なし | ペイン枠の表示/非表示 |
TogglePaneEmbedOrFloating | なし | 埋め込み/フローティング切替 |
ToggleFloatingPanes | なし | フローティングペイン全体の表示切替 |
Clear | なし | スクロールバッファのクリア |
DumpScreen | ファイルパス | ペイン内容のファイル出力 |
タブ操作アクション
| アクション | 引数 | 機能 |
|---|---|---|
NewTab | cwd, name, layout | 新規タブの作成 |
CloseTab | なし | 現在のタブを閉じる |
GoToTab | タブ番号 | 番号指定でタブ移動 |
GoToNextTab | なし | 次のタブへ移動 |
GoToPreviousTab | なし | 前のタブへ移動 |
MoveTab | Left/Right | タブ位置の移動 |
ToggleTab | なし | 直前のタブに切替 |
スクロール・検索アクション
| アクション | 引数 | 機能 |
|---|---|---|
ScrollUp | なし | 1行上スクロール |
ScrollDown | なし | 1行下スクロール |
HalfPageScrollUp | なし | 半ページ上スクロール |
HalfPageScrollDown | なし | 半ページ下スクロール |
PageScrollUp | なし | 1ページ上スクロール |
PageScrollDown | なし | 1ページ下スクロール |
ScrollToTop | なし | 最上部へ移動 |
ScrollToBottom | なし | 最下部へ移動 |
その他のアクション
| アクション | 引数 | 機能 |
|---|---|---|
SwitchToMode | モード名 | モード切替 |
Run | コマンド + 引数 | コマンドの実行 |
WriteChars | 文字列 | ペインへの文字列入力 |
Detach | なし | セッションのデタッチ |
Quit | なし | Zellij の終了 |
NextSwapLayout | なし | 次のスワップレイアウトへ切替 |
PreviousSwapLayout | なし | 前のスワップレイアウトへ切替 |
ToggleMouseMode | なし | マウスサポートの切替 |
config.kdl によるキーバインドのカスタマイズ
設定ファイルの場所
~/.config/zellij/config.kdl
デフォルト設定を書き出してから編集する方法が安全です。
mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl
キーバインド定義の基本文法
keybinds {
normal {
bind "Alt n" { NewPane; }
bind "Alt f" { ToggleFloatingPanes; }
}
pane {
bind "h" "Left" { MoveFocus "Left"; }
bind "l" "Right" { MoveFocus "Right"; }
bind "j" "Down" { MoveFocus "Down"; }
bind "k" "Up" { MoveFocus "Up"; }
}
}
デフォルト設定の部分上書き
特定のキーだけ変更したい場合は unbind で既存のバインドを解除してから再定義します。
keybinds {
normal {
unbind "Alt n"
bind "Alt t" { NewPane; }
}
}
全てのデフォルトを消して完全にカスタムで定義する場合は clear-defaults=true を指定します。
keybinds clear-defaults=true {
normal {
bind "Alt n" { NewPane; }
bind "Ctrl g" { SwitchToMode "Locked"; }
}
}
複数アクションの同時実行
1つのキーに複数のアクションを割り当てられます。
pane {
bind "f" {
ToggleFocusFullscreen;
SwitchToMode "Normal";
}
}
レイアウト定義ファイルの活用
プロジェクトごとのワークスペース配置を KDL 形式で定義できます。
レイアウトファイルの場所
~/.config/zellij/layouts/
Web 開発向けレイアウト例
layout {
pane size=1 borderless=true {
plugin location="tab-bar"
}
pane split_direction="vertical" {
pane name="editor" size="60%" {
command "nvim"
}
pane split_direction="horizontal" {
pane name="dev-server" {
command "npm"
args "run" "dev"
}
pane name="terminal"
}
}
pane size=2 borderless=true {
plugin location="status-bar"
}
}
# レイアウトを指定して起動
zellij --layout ~/.config/zellij/layouts/web-dev.kdl
tmux から Zellij への移行時の対応表
tmux に慣れているユーザーが Zellij に乗り換える際、操作の対応関係を把握しておくとスムーズです。
| 操作 | tmux | Zellij (Default) | Zellij (Tmux モード) |
|---|---|---|---|
| 水平分割 | Ctrl+b " | Ctrl+p → d | Ctrl+b → " |
| 垂直分割 | Ctrl+b % | Ctrl+p → r | Ctrl+b → % |
| ペイン移動 | Ctrl+b 矢印 | Alt+矢印 | Ctrl+b → 矢印 |
| ペインを閉じる | Ctrl+b x | Ctrl+p → x | Ctrl+b → x |
| 新規タブ | Ctrl+b c | Ctrl+t → n | Ctrl+b → c |
| タブ切替 | Ctrl+b n/p | Alt+[ / Alt+] | Ctrl+b → n/p |
| デタッチ | Ctrl+b d | Ctrl+o → d | Ctrl+b → d |
| セッション一覧 | tmux ls | zellij ls | zellij ls |
| フルスクリーン | Ctrl+b z | Ctrl+p → f | Ctrl+b → z |
| スクロール | Ctrl+b [ | Ctrl+s | Ctrl+b → [ |
Neovim・Helix との併用設定
Zellij はデフォルトで Ctrl+p / Ctrl+s / Ctrl+n などのキーバインドを使用するため、Neovim や Helix のショートカットと競合します。
方法1: Locked モードを活用する
エディタ操作中は Ctrl+g で Locked モードに切り替え、Zellij のキーバインドを一時無効化します。エディタから抜けるときに Ctrl+g で復帰します。
方法2: Tmux モードで運用する
プレフィックスキー方式なら通常のキー入力と干渉しません。
keybinds {
normal {
bind "Ctrl b" { SwitchToMode "Tmux"; }
}
}
方法3: unlock-first プリセットを使う
Zellij 0.41 以降では、キーバインドプリセットとして Unlock-First (non-colliding) が用意されています。Ctrl+g でインターフェースをアンロックしてからモードを操作する方式で、エディタとのキー競合を根本的に解消できます。Session モード(Ctrl+o)→ c → TAB で設定画面から切り替え可能です。
プラグインの利用
Zellij は WebAssembly(WASM)ベースのプラグインシステムを搭載しています。
組み込みプラグイン
| プラグイン名 | 機能 |
|---|---|
| tab-bar | タブバーの表示 |
| status-bar | ステータスバー・操作ガイドの表示 |
| strider | ファイルマネージャー |
| compact-bar | タブバーとステータスバーの統合表示 |
| session-manager | セッション管理 UI |
プラグインの起動方法
レイアウトファイル内で指定するか、Pane モードから起動します。
pane {
plugin location="strider"
}
よく使う操作パターン集
SSH 接続先でのセッション維持
ssh remote-server
zellij -s work
# 作業中に回線が切れても...
ssh remote-server
zellij attach work
# 作業状態がそのまま復帰
開発サーバー + エディタ + ログ監視の同時表示
# 名前付きセッション起動
zellij -s my-app
# Paneモード(Ctrl+p)で分割
# d: 下に分割 → dev server
# r: 右に分割 → log viewer
複数プロジェクトのセッション管理
# プロジェクトごとにセッション作成
zellij -s project-a
# Ctrl+o → d でデタッチ
zellij -s project-b
# Ctrl+o → d でデタッチ
# セッション一覧で確認
zellij ls
# 特定セッションに復帰
zellij attach project-a
インストール方法
macOS(Homebrew)
brew install zellij
Linux(パッケージマネージャー)
# Ubuntu/Debian(snap)
sudo snap install zellij --classic
# Arch Linux
sudo pacman -S zellij
# Fedora
sudo dnf install zellij
Rust(Cargo)
cargo install --locked zellij
ワンライナーインストール
bash <(curl -L https://zellij.dev/launch)
インストール確認
zellij --version
# zellij 0.43.1
トラブルシューティング
不要なセッションが削除されない場合
zellij ls で残存セッションを確認し、zellij kill-session <name> で個別に削除するか、zellij kill-all-sessions で一括削除します。
キーバインドが効かない
Locked モード(画面上部に LOCKED 表示)になっている可能性があります。Ctrl+g で Normal モードに切り替えてください。
日本語表示が崩れる
UTF-8 対応のターミナルエミュレータ(Alacritty、WezTerm、Ghostty、iTerm2 など)の使用を推奨します。環境変数 LANG=ja_JP.UTF-8 が設定されていることも確認してください。
マウスが効かない
config.kdl に以下を追加します。
mouse_mode true
まとめ
Zellij のコマンド体系は CLI サブコマンド(セッション管理・セットアップ)と モード別キーバインド(Pane/Tab/Resize/Move/Scroll/Session)の2層構造です。tmux のプレフィックスキー方式とは異なり、モード切替方式を採用しているため、操作ガイドが画面に表示される分、学習コストが低くなります。
tmux からの移行時は Tmux モード(Ctrl+b)を使えば既存の操作感を維持しつつ Zellij の追加機能(フローティングペイン・WASM プラグイン・レイアウト定義)を活用できます。
Zellij の全コマンド・オプションは 公式ドキュメント から確認できます。デフォルト設定ファイルは GitHubリポジトリのdefault.kdl で公開されています。