ターミナル管理したい(zellij

$ zellij --help
$ zellij --session セッション名
$ zellij list-sessions
$ zellij attach セッション名
$ zellij delete-session セッション名

zellij(ゼリージュ)はターミナルマルチプレクサーという ターミナル管理(?)ツールです。 ターミナルの中にターミナル(=セッションと呼ぶ)を 入れ子にできるようになっているので、 作業に必要なディレクトリ/ファイルを表示・整理できます。

また、リモートサーバーでzellijセッションを作成してプロセスを走らせておくと、クライアントからの接続を閉じても再接続後に再開できます。

注釈

「ゼリージュ」はモロッコなどで見られる幾何学模様のモザイクタイルのことだそうです。

インストールしたい(zellij

$ brew install zellij
$ brew install --cask font-hack-nerd-font

zellijはHomebrewでインストールできます。 また、ナビゲーションを表示するためにNerd Font系が必要です。 nerdが含まれるフォントを追加し、ターミナルに設定してください。

注釈

僕はターミナル上のフォントをMonaspace Kryptonに設定しています。 このフォントはNerd Fontに対応していないため --simplified-ui = trueに設定して使っています。

セッションしたい(--session / -s

$ zellij

// セッション名を指定する
$ zellij -s セッション名

zellijコマンドでセッションを作成できます。 --sessionオプションでセッション名を指定できます。

セッション操作したい(Ctrl + キー

操作キー

内容

ctrl + g

ロック操作

ctrl + p

ペイン操作

ctrl + t

タブ操作

ctrl + r

リサイズ操作

ctrl + h

移動操作

ctrl + s

ペイン内操作

ctrl + o

セッション操作

ctrl + q

終了

セッション内はctrl + キーで操作を開始できます。 この操作キーは、画面の下部に表示されているため、事前に覚える必要はありません。 また、トグルになっているため、間違えて押してしまった場合でも同じキーで取り消せるので便利です。

ロック操作したい(ctrl + g

ctrl + gで、zellijの操作キーをロック/アンロックできます。 いくつかの操作キーは、シェルの操作キーなどと重複しています。

たとえばctrl + pctrl + nはコマンド履歴を遡るために使いますが、zellijではペイン操作とリサイズ操作に割り当てられています。 このような場合にctrl + gで操作キーをロックすることで、シェルのほうにコマンドを送信できるようになります。

ペイン操作したい(ctrl + p

操作キー

コマンド

内容

ctrl + p

n

ペインを作成

ctrl + p

h j k l

ペインを移動

ctrl + p

ペインを移動

ctrl + p

ENTER

ペインを選択

ctrl + p

x

ペインを閉じる

ctrl + p

f

フルスクリーン

ctrl + p

w

フローティングスクリーン

タブ操作したい(ctrl + t

操作キー

コマンド

内容

ctrl + t

n

タブを作成

ctrl + t

h l

タブを移動

ctrl + t

タブを移動

ctrl + t

ENTER

タブを選択

ctrl + t

TAB

タブをトグル

ctrl + t

x

タブを閉じる

リサイズ操作したい(ctrl + n

操作キー

コマンド

内容

ctrl + n

h l

ペインをリサイズ

選択したペインのサイズを調整できます。 キーで入力した方向に拡大・縮小します。

移動操作したい(ctrl + h

操作キー

コマンド

内容

ctrl + h

h l

ペインを移動

選択したペインの表示位置を変更できます。 キーで入力した方向のペインと入れ替えます。

ペイン内操作したい(ctrl + s

操作キー

コマンド

内容

ctrl + s

s

ペイン内を検索

ctrl + s

スクロール(1行)

ctrl + s

d u

スクロール(半ページ)

ctrl + s

e u

編集

lessコマンドのような操作ができます。

セッション操作したい(ctrl + o

操作キー

コマンド

内容

ctrl + o

d

セッションをデタッチ

ctrl + o

w

セッションを管理

作業を一時中断するときにデタッチしておけば、 アタッチして再開できます。

セッションを再開したい(attach / a

// 既存のセッションを再開
$ zellij attach セッション名
$ zellij a セッション名

// セッション名がなければ作成
$ zellij attach --create セッション名

attachコマンドで、セッションを再開できます。 --createオプションで、セッション名が存在しない場合に作成できます。

セッションを確認したい(list-sessions / ls

$ zellij list-sessions
$ zellij ls
kumaroot [Created 21m26m 59s ago] (current)
vitreous-apricot [Created 1m48s ago]

list-sessionsコマンドで、セッション名を確認できます。 作業開始前に使うとよいでしょう。

$ zellij list-sessions
vitreous-apricot [Created 12m 32s ago] (EXITED - attach to resurrect)

セッション名と一緒に、セッションの状態も確認できます。 終了したセッションはEXITEDと表示されます。

$ zellij list-sessions
No active zellij sessions found.

セッションがない場合は No active zellij sessions found. と表示されます。

セッションを終了したい(kill-session / k

$ zellij kill-session セッション名
$ zellij k セッション名

$ zellij kill-all-sessions セッション名
$ zellij ka セッション名

セッションを削除したい(delete-session / d

$ zellij delete-session セッション名
$ zellij d セッション名

$ zellij delete-all-sessions
$ zellij da

delete-sessionコマンドで、デタッチされたセッションを削除できます。 delete-all-sessionコマンドで、すべてのデタッチされたセッションを削除できます。

注釈

アクティブなセッションは削除されません。

設定を確認したい(setup --check

// 設定を標準出力に表示
$ zellij setup --check
[Version]: "0.40.1"
[CONFIG DIR]: Not Found
[CONFIG FILE]: Not Found
[DATA DIR]: "~/Library/Application Support/org.Zellij-Contributors.Zellij"
[PLUGIN DIR]: "~/Library/Application Support/org.Zellij-Contributors.Zellij/plugins"
[LAYOUT DIR]: Not Found
[SYSTEM DATA DIR]: "/usr/share/zellij"
[ARROW SEPARATOR]: 
[MOUSE INTERACTION]:
[DEFAULT EDITOR]: Not set, checked $EDITOR and $VISUAL
[FEATURES]: []
[DOCUMENTATION]: https://www.zellij.dev/documentation/

setup --checkで現在の設定を確認できます。

キーバインドを設定したい

// キーバインドを標準出力に表示
$ zellij setup --dump-config

// ファイルに保存
$ mkdir ~/.config/zellij
$ zellij setup --dump-config > ~/.config/zellij/config.kdl

zellij用の設定は~/.config/zellij/に保存します。 設定ファイルはKDL形式が採用されています。 設定できる内容はOptionsで確認できます。

注釈

0.32.0以前はYAML形式だったようです。

コマンド補完したい

// Fish用の補完を標準出力に表示
$ zellij setup --generate-completion fish

// ファイルに保存
$ zellij setup --generate-completion fish > ~/.config/fish/completions/zellij.fish

自動起動したい

// Fish用の補完を標準出力に表示
$ zellij setup --generate-auto-start fish

// The following snippet is meant to be
// used like this in your fish config:
//
// if status is-interactive
//     # Configure auto-attach/exit to your likings (default is off).
//     # set ZELLIJ_AUTO_ATTACH true
//     # set ZELLIJ_AUTO_EXIT true
//     eval (zellij setup --generate-auto-start fish | string collect)
// end
//
if not set -q ZELLIJ
    if test "$ZELLIJ_AUTO_ATTACH" = "true"
        zellij attach -c
    else
        zellij
    end

    if test "$ZELLIJ_AUTO_EXIT" = "true"
        kill $fish_pid
    end
end

自動で起動できるようのスクリプトがシェルごとに用意されています。

# ~/.config/fish/config.fish

if type -q zellij
    echo "=================================================="
    echo "Current Zellij Sessions:"
    zellij list-sessions
    echo "--------------------------------------------------"
    echo "Next:"
    echo "  Resume the session: 'zellij a SESSION_NAME'"
    echo "  Delete the session: 'zellij d SESSION_NAME'"
    echo "=================================================="
end

いつも自動起動だとセッションが溜まってしまいそうなので、 セッション名を確認できるようにだけしています。

コピーしたい(``copy_command`)

// ~/.config/zellij/config.kdl

// Provide a command to execute when copying text.
// Examples:
// copy_command "xclip -selection clipboard" // x11
// copy_command "wl-copy"                    // wayland
copy_command "pbcopy"                     // osx

// Choose the destination for copied text
// Options:
//   - system (default)
//   - primary
//
// copy_clipboard "primary"

// Enable or disable automatic copy (and clear) of selection when releasing mouse
// Default: true
//
// copy_on_select false

ペイン内に表示された内容をコピーする設定です。 copy_command "pbcopy"でコピーできるようになります。 また、デフォルトはcopy_on_select trueになっていて、ドラグするだけでコピーできます。

Nerd Font設定したい(simplified_ui

// ~/.config/zellij/config.kdl

//  Options:
//    - true
//    - false (Default)
//
simplified_ui true

ターミナル上の表示にNerd Fontに対応していないフォントを使いたいので、 simplified_ui trueにしました。

リファレンス