Zellij:会话、布局与编辑器协作

本页目录

Zellij 将一个终端组织成会话、标签和面板。会话运行在启动 Zellij 的那台机器上;终端窗口是连接它的客户端。离开客户端与结束会话是不同操作,这是持久工作区的基础。

本文命令以 Zellij 0.44.3 为核对版本。键位可被配置覆盖,日常操作以当前底栏提示与 config.kdl 为准。

创建并接回具名会话

先进入项目根目录,在尚未进入 Zellij 的终端执行:

zellij --session doc-work

doc-work 是示例会话名。进入后打开编辑器或执行 pwd,确认初始位置。随后通过会话菜单执行 detach;默认键位通常从 Ctrl+o 进入会话模式,再选择分离,但自定义配置可能不同。

回到外层终端查看会话:

zellij list-sessions

指定名称接回:

zellij attach doc-work

在 SSH 远端启动的会话,需要先重新 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 到同一会话
关闭面板中的 Shell/程序该面板任务结束重新启动任务
结束会话会话内进程结束只能重新建立工作区
主机重启或会话崩溃原进程不再存活resurrection 可重建已保存的布局/命令信息

resurrection 不会把已经终止的进程内存复原。保存了命令也不代表可以不经判断就重跑部署或数据修改任务。会话恢复

减少按键冲突

以下是可单独使用的最小键位配置,放在 ~/.config/zellij/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 默认键位的描述。

配置检查:

zellij setup --check

输出同时显示配置和布局目录。先确认读到的路径正确,再检查语法;现有会话和新建会话的行为都应验证。

与 Neovim 共用方向键

如果希望 Ctrl+hjkl 在 Neovim 内移动窗口,到边界后继续移动 Zellij 面板,需要两端配合:Neovim 使用 smart-splits,Zellij 使用 vim-zellij-navigator。只有一侧映射通常只能完成一半路径。

完整的两侧设置与检查顺序放在 Neovim 远程与输入。本地旧配置还包含对 smart-splits 内部边界探测函数的修改;这是与特定插件版本相关的兼容补丁,不作为新环境的默认配置。

从日志回到可编辑文本

Zellij 的 EditScrollback 动作可以把面板回滚内容交给编辑器。先确认 scrollback editor 的配置与可执行路径,再绑定快捷键。这份文本适合搜索和复制,但它不是原程序的实时日志,也不保证包含已经超出滚动缓冲范围的历史。

排错时先在不使用 Zellij 的终端重试。若问题消失,再逐项检查按键、剪贴板协议和终端能力;若仍存在,继续检查终端或前台程序。主题输出与重载见 Matugen。