Zellij のセッション、配置、エディタ連携

このページの目次

Zellij は端末をセッション、タブ、ペインに整理する。セッションは起動したマシン上で動き、端末ウィンドウはそこへ接続するクライアントとなる。クライアントの分離とセッション終了は別操作である。

例は 0.44.3 で確認した。キーは上書きできるため、現在のステータスバーと設定を確認する。

名前付きセッションを作る

Zellij の外にある端末でプロジェクトへ移動して実行する。

zellij --session doc-work

doc-work は名前の例。pwd を確認してから、セッションメニューで detach する。標準設定では一般に Ctrl+o からセッションモードへ入るが、個人設定では異なる。

外側で一覧を確認する。

zellij list-sessions

名前を指定して戻る。

zellij attach doc-work

SSH 接続先で作ったセッションは、そのマシンへ再接続してから attach する。ローカルの Zellij では遠隔プロセスを復元できない。

レイアウトが保存するもの

~/.config/zellij/layouts/dev.kdl に保存する。

layout {
    pane split_direction="vertical" {
        pane size="65%"
        pane split_direction="horizontal" {
            pane
            pane
        }
    }
}

左を広く、右を上下に分けた三ペインで、コマンドは自動実行しない。通常の端末から新しいセッションを作る。

zellij --session layout-demo --layout dev

作業場所やプログラムも指定できるが、配置は構築方法の記述である。プロセスのメモリ、接続、未保存の編集内容を保存するものではない。レイアウト

分離、終了、復元

操作状態戻し方
detachセッションは継続同じ名前へ attach
ペインのプログラム終了そのタスクが終了再実行
セッション終了内部プロセスが終了作業領域を再構築
再起動やクラッシュ元のプロセスは消失保存された配置・命令情報から再構築

resurrection は終了したプロセスのメモリ復元ではない。保存されたデプロイ命令や更新処理も無確認で再実行しない。セッション復元

キー競合を小さくする

以下は既定キーを消し、locked と小さな制御モードを作る完全な最小 config.kdl。既存設定を退避してから試す。

default_mode "locked"
keybinds clear-defaults=true {
    locked {
        bind "Ctrl g" { SwitchToMode "normal"; }
    }
    normal {
        bind "Ctrl g" { SwitchToMode "locked"; }
        bind "n" { NewPane; SwitchToMode "locked"; }
        bind "d" { Detach; }
        bind "h" { MoveFocus "left"; }
        bind "j" { MoveFocus "down"; }
        bind "k" { MoveFocus "up"; }
        bind "l" { MoveFocus "right"; }
    }
}

locked は多くのキーを前面へ渡す。Ctrl+g で normal、n でペイン追加、d で分離となる。これは例の定義であり標準キーの説明ではない。

zellij setup --check

設定とレイアウトの実パスを確認し、構文を調べる。既存セッションと新規セッションの両方で動作を見る。

Neovim と方向キーを共有する

Ctrl+hjkl でエディタ内を移動し、端まで来たら Zellij へ移るには、Neovim の smart-splits と Zellij の vim-zellij-navigator が必要になる。片側だけでは経路が完成しない。

両側の設定と境界テストは Neovim 遠隔入力を参照する。旧ローカル設定の内部関数上書きはバージョン依存の回避策で、新規環境の既定にはしない。

スクロール履歴を編集可能な文書として見る

EditScrollback は履歴をエディタへ渡す。実行パスを確認してからキーを設定する。検索やコピーに便利だが、リアルタイムログではなく、バッファ上限を超えた古い出力も保証されない。

問題が起きたら Zellij なしで比較する。改善すればキー、クリップボード転送、端末能力を調べ、変わらなければ端末やアプリ側へ進む。配色は Matugenで扱う。