Zellij 和 tmux 的区别与迁移快捷键
Zellij 和 tmux 都是终端复用器:它们把一个终端窗口拆成多个工作区域,并允许会话在断开后继续存在。区别不在「能不能分屏」,而在默认交互模型。
Zellij 默认更像一个带状态提示的终端工作台:它有可见的 tab bar、status bar、mode 提示、布局系统和插件入口。tmux 默认更像一个小而稳定的终端会话层:一个 prefix 键进入命令空间,其余时候尽量不接管输入。
这篇文章基于 Zellij User Guide: Keybinding Presets、Zellij User Guide: Keybindings、Zellij 默认配置 和 tmux(1) manual 整理。
核心区别
1. 快捷键模型不同
Zellij 的默认 preset 是 mode-based。官方文档里给的例子是:在 normal mode 下按 Ctrl p 进入 Pane mode,再按 n 创建 pane,或者按 x 关闭当前 pane。
也就是说,Zellij 常见操作是:
|
|
tmux 的默认模型是 prefix-based。tmux manual 明确写默认 prefix 是 C-b,也就是 Ctrl b。常见操作是:
|
|
从 Zellij 切到 tmux,最重要的肌肉记忆变化是:从「先进入某个 mode」切换为「先按 prefix,然后按命令键」。
2. 名词大体对应,但边界不同
| 概念 | Zellij | tmux | 迁移时怎么理解 |
|---|---|---|---|
| 会话 | session | session | 基本等价,都是可 detach / attach 的工作现场 |
| 标签页 | tab | window | Zellij 的 tab 对应 tmux 的 window |
| 分屏 | pane | pane | 基本等价 |
| 布局 | layout / swap layout | layout | Zellij 更强调声明式 layout 和插件;tmux 更常用命令和配置拼出来 |
| 快捷键入口 | mode,比如 Pane、Tab、Session | prefix,默认 Ctrl b |
Zellij 是多个入口;tmux 是一个主入口 |
| UI 提示 | 默认明显 | 默认较少 | tmux 需要靠 Ctrl b ? 查看快捷键 |
3. Zellij 默认带 tmux 兼容入口
Zellij 的默认配置里有一个 tmux mode,并且在非 locked mode 下绑定了:
|
|
进入这个 mode 后,Zellij 内置了一批 tmux 风格绑定,例如:
|
|
所以,在继续使用 Zellij 的同时,也可以直接开始使用 Ctrl b 这一套来提前适应 tmux。它不是完整 tmux,但足够覆盖分屏、tab、移动焦点、detach 这些高频动作。
如何很快从 Zellij 切换到 tmux
第一步:先把 mental model 换掉
记住三组对应关系就够了:
|
|
然后把常用动作收敛到 tmux 的 prefix:
|
|
第二步:只背 10 个快捷键
刚切换时不要背完整表。先把下面这些用熟:
| 目标 | Zellij 默认 | tmux 默认 |
|---|---|---|
| detach | Ctrl o d |
Ctrl b d |
| 新建 tab/window | Ctrl t n |
Ctrl b c |
| 关闭 tab/window | Ctrl t x |
Ctrl b & |
| 上一个 tab/window | Ctrl t h / k |
Ctrl b p |
| 下一个 tab/window | Ctrl t l / j |
Ctrl b n |
| 按编号切换 | Ctrl t 1..9 |
Ctrl b 0..9 |
| 下方分屏 | Ctrl p d |
Ctrl b " |
| 右侧分屏 | Ctrl p r |
Ctrl b % |
| 关闭 pane | Ctrl p x |
Ctrl b x |
| pane 全屏/恢复 | Ctrl p f |
Ctrl b z |
| 移动 pane 焦点 | Ctrl p h/j/k/l |
Ctrl b 方向键,也可配置 h/j/k/l |
| 查看快捷键 | 看 status bar / 配置页 | Ctrl b ? |
第三步:用 tmux 命令替代 Zellij session 管理
Zellij 常见是:
|
|
tmux 对应可以这样用:
|
|
tmux manual 也说明了:不带命令启动时,默认行为等价于创建新 session;在 session 内可以用 Ctrl b d detach,再用 tmux attach-session 重新连接。
第四步:给 tmux 加一个最小配置
如果已经习惯 Zellij 的 h/j/k/l 移动焦点、鼠标操作和更直观的分屏键,可以先用下面这个最小 .tmux.conf:
|
|
应用配置:
|
|
如果更偏好 GNU screen 风格,或者认为 Ctrl a 更容易按,可以把 prefix 改成 Ctrl a。tmux manual 里也给了这个例子:
|
|
不过,刚从 Zellij 切到 tmux 时,建议先保留 Ctrl b。原因很简单:Zellij 默认就提供 Ctrl b 的 tmux mode,迁移期间两边可以共用同一套核心肌肉记忆。
常用快捷键速查
tmux 默认高频键
下面所有键都先按 Ctrl b:
| 按键 | 作用 |
|---|---|
? |
查看当前 key bindings |
d |
detach 当前 client |
c |
创建 window |
, |
重命名 window |
& |
关闭 window |
n |
下一个 window |
p |
上一个 window |
0..9 |
切换到指定 window |
" |
上下分屏 |
% |
左右分屏 |
x |
关闭 pane |
z |
pane zoom / restore |
方向键 |
移动 pane 焦点 |
o |
切到下一个 pane |
; |
回到上一个 active pane |
[ |
copy mode / 查看历史 |
] |
粘贴最近 buffer |
: |
进入 tmux command prompt |
Space |
切换到下一个预设 layout |
tmux manual 里还提到,Ctrl-Up/Down/Left/Right 默认按 1 cell 调整 pane 大小,Alt-Up/Down/Left/Right 默认按 5 cells 调整。
Zellij 默认高频键
下面是 Zellij 默认 preset 的高频入口:
| 按键 | mode / 动作 |
|---|---|
Ctrl p |
Pane mode |
Ctrl t |
Tab mode |
Ctrl o |
Session mode |
Ctrl s |
Scroll mode |
Ctrl n |
Resize mode |
Ctrl h |
Move mode |
Ctrl g |
Locked mode |
Ctrl q |
Quit |
Alt n |
新建 pane |
Alt h/j/k/l |
移动焦点 |
Alt = / Alt - |
调整 pane 大小 |
Alt [ / Alt ] |
切换 swap layout |
Pane mode 里常用:
| 按键 | 作用 |
|---|---|
n |
新建 pane |
d |
下方新建 pane |
r |
右侧新建 pane |
x |
关闭 pane |
f |
pane 全屏/恢复 |
h/j/k/l |
移动焦点 |
w |
显示/隐藏 floating panes |
z |
显示/隐藏 pane frames |
Tab mode 里常用:
| 按键 | 作用 |
|---|---|
n |
新建 tab |
x |
关闭 tab |
r |
重命名 tab |
h/k |
上一个 tab |
l/j |
下一个 tab |
1..9 |
跳到指定 tab |
s |
同步输入到当前 tab 的 panes |
Session mode 里常用:
| 按键 | 作用 |
|---|---|
d |
detach |
w |
打开 session-manager |
c |
打开 configuration |
p |
打开 plugin-manager |
l |
打开 layout-manager |
什么时候继续用 Zellij,什么时候换 tmux
更适合继续用 Zellij 的情况:
- 偏好默认可见的快捷键提示,不想从空白状态栏开始配。
- 依赖 layout、插件、floating pane、session resurrection 这类内置体验。
- 经常需要演示或共享终端工作区,希望 UI 状态更直观。
更适合切到 tmux 的情况:
- 主要需要稳定、通用、远程机器上容易安装的 session/pane/window 管理。
- 希望默认行为尽量少接管快捷键,配置完全由使用者控制。
- 已经在 shell、编辑器、SSH、服务器环境里长期使用 prefix-based 工具。
Ghostty 中使用 Zellij
如果终端模拟器使用 Ghostty,还会遇到另一类问题:Alt+Right 可能被 Ghostty 转成 Esc f,从而在 Zellij 里误触发 Alt+f 的 floating pane;Zellij 开启 mouse_mode 后,链接点击也需要使用 Cmd+Shift+Click。
这部分和 tmux 迁移不是同一个主题,单独整理在 Ghostty 和 Zellij 配合使用:快捷键、鼠标和链接点击配置。
实践上的迁移建议是:不要一上来复制一份巨大的 tmux 配置。先用默认 Ctrl b 跑一周,只加鼠标、h/j/k/l 移动和分屏别名。等到确实发现痛点,再逐项加配置。这样迁移成本最低,也最容易判断哪些能力是真需求。