Zellij:会话、布局与编辑器协作
本页目录
Zellij 将一个终端组织成会话、标签和面板。会话运行在启动 Zellij 的那台机器上;终端窗口是连接它的客户端。离开客户端与结束会话是不同操作,这是持久工作区的基础。
本文命令以 Zellij 0.44.3 为核对版本。键位可被配置覆盖,日常操作以当前底栏提示与 config.kdl 为准。
创建并接回具名会话
先进入项目根目录,在尚未进入 Zellij 的终端执行:
doc-work 是示例会话名。进入后打开编辑器或执行 pwd,确认初始位置。随后通过会话菜单执行 detach;默认键位通常从 Ctrl+o 进入会话模式,再选择分离,但自定义配置可能不同。
回到外层终端查看会话:
指定名称接回:
在 SSH 远端启动的会话,需要先重新 SSH 到那台机器,再执行 attach。连接本地 Zellij 不会恢复远端的进程。
布局保存什么
将下面保存为 ~/.config/zellij/layouts/dev.kdl:
layout {
pane split_direction="vertical" {
pane size="65%"
pane split_direction="horizontal" {
pane
pane
}
}
}
这会创建左侧较宽、右侧上下分开的三个面板。没有预设执行命令,便于先验证布局。回到一个普通终端,从项目目录启动新会话:
布局可以进一步指定工作目录和程序,但它描述的是如何建立工作区。正在运行的程序内存、网络连接与未保存编辑内容并不会因为保存了布局而自动持久化。布局说明
分离、退出与恢复
| 动作 | 程序通常如何变化 | 恢复方式 |
|---|---|---|
| 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 默认键位的描述。
配置检查:
输出同时显示配置和布局目录。先确认读到的路径正确,再检查语法;现有会话和新建会话的行为都应验证。
与 Neovim 共用方向键
如果希望 Ctrl+hjkl 在 Neovim 内移动窗口,到边界后继续移动 Zellij 面板,需要两端配合:Neovim 使用 smart-splits,Zellij 使用 vim-zellij-navigator。只有一侧映射通常只能完成一半路径。
完整的两侧设置与检查顺序放在 Neovim 远程与输入。本地旧配置还包含对 smart-splits 内部边界探测函数的修改;这是与特定插件版本相关的兼容补丁,不作为新环境的默认配置。
从日志回到可编辑文本
Zellij 的 EditScrollback 动作可以把面板回滚内容交给编辑器。先确认 scrollback editor 的配置与可执行路径,再绑定快捷键。这份文本适合搜索和复制,但它不是原程序的实时日志,也不保证包含已经超出滚动缓冲范围的历史。
排错时先在不使用 Zellij 的终端重试。若问题消失,再逐项检查按键、剪贴板协议和终端能力;若仍存在,继续检查终端或前台程序。主题输出与重载见 Matugen。