zellij を始める

zellij は tmux とか GNU screen のようなターミナルマルチプレクサ。rust で書かれてるっぽくて、UI がリッチ。 昔は GNU screen を使っていて、最近は tmux を使っていた。tmux にそこまでの不満はないのだが、ふと思い立って zellij を使ってみることにする。

zellij はショートカットキーをやたら要求してくるのがなぁと思ってたけど、non-colliding preset があるんで、こっちを使えば良いだけだった。 tmux みたいに、prefix key を一個に出来て良い。 一日中ターミナルに住む、ような環境で作業するなら、全部にショートカットキーを割り振って、Super とかを prefix にするんだけど、メインは goland での作業とかになりがちなもんで。。

https://zellij.dev/documentation/keybinding-presets#the-unlock-first-non-colliding-preset

unlock キーの prefix をデフォルトの C-g から C-t に変更。tmux で長らく使っているモノ。

scroll mode 内での検索語の移動を n/p から n/N に変更。

clipboard へのコピーは、mouse で選択したら自動的にされる。X みたい。 copy_on_select が true な場合(default は true)。

基本的に、zellij は、プロジェクトごとに一個、とかで起動することが多いので、以下のように fish の関数を定義して起動することにする。 無駄にたくさん立ち上がらなくなって便利。

function zj
    # 1. カレントディレクトリのベース名を取得
    set -l sess_name (basename (pwd))

    # 2. 同名のセッションが何個あるか取得
    #    -x は「行全体が完全一致」だけを抽出(正規表現の $ が邪魔にならない)
    set -l matches (zellij list-sessions | grep -x $sess_name)

    # 3. 複数ヒットしたら fzf で選択させる
    if test (count $matches) -gt 1
        set -l sess_name (printf '%s\n' $matches | fzf --prompt='Select Zellij session> ')
    end

    # 4. attach –c で「無ければ作成、あれば attach」する
    zellij attach $sess_name -c
end

これでしばらく使ってみようと思う。

【20251229追記】

URL のクリックは Shift 押しながらで出来る。数日使ってみてる感じ、zellij でわりとイケそう。

【20260105追記】

ホイールでスクロール出来るようになった気がする。tmuxの時も出来てたかもしれないけど。

Published: 2025-12-24(Wed) 11:48