Zellij:一个更现代的 tmux 替代
为什么需要另一个 tmux
Tmux 是终端复用器的标准答案——稳定、轻量、无处不在。但它也有明显的短板:开箱体验差、布局靠手动、远程需自搭。Zellij 用 Rust 重写了终端复用器的核心,重点补上了这些短板,但也付出了生态小、内存多的代价。
| tmux | Zellij | |
|---|---|---|
| 开箱体验 | ★☆☆☆☆ | ★★★★★ |
| 布局自动化 | ★☆☆☆☆ | ★★★★★ |
| 插件生态 | ★★★★★ | ★★☆☆☆ |
| 快捷键设计 | ★★☆☆☆ | ★★★★☆ |
| 浮动窗格 | ★☆☆☆☆ | ★★★★★ |
| 原生 Web | ★☆☆☆☆ | ★★★★★ |
Zellij 不是来取代 tmux 的。它在开箱体验、布局自动化、浮动窗格、Web 远程上有明显优势,但插件生态和安装普及度暂时不如。
和 tmux 的核心差异
1. 免配置开箱
tmux 的默认状态栏简陋到几乎没有信息;Zellij 的默认 UI 包含:
- 底部的选项卡和窗格导航
- 会话名称
- 模式指示器(Normal / Pane / Tab / Resize / Move / Scroll)
- 鼠标完全支持(拖拽调整窗格、点选切换)
不需要写一行配置就能获得可用的体验。
2. 布局系统
tmux 没有原生的布局管理能力,需要用 tmuxinator、tmuxp 等第三方工具。Zellij 内置了声明式布局:
layout {
pane split_direction="vertical" {
pane command="nvim" { args "."; }
pane command="cargo" { args "watch" "-x" "test"; }
}
pane command="htop"
}
启动:zellij --layout dev.kdl。
3. 插件生态
| tmux | Zellij | |
|---|---|---|
| 插件数量 | 数百个 | 个位数 |
| 写法 | shell 脚本 | Rust / WebAssembly |
| 能做 UI | 有限(状态栏文本) | 完整的自定义渲染 |
| 事件驱动 | 环境变量+ hook | 订阅式事件系统 |
| 学习成本 | 低(会写 shell 就行) | 高(需要 Rust) |
| 社区积累 | 十年以上 | 起步阶段 |
Zellij 的技术上限更高——插件能做自定义 UI、订阅事件、控制工作区——但生态积累差 tmux 十年。如果插件是选型的关键因素,目前 tmux 选择多得多。
4. 模式切换而不是前缀键
| 操作 | tmux | Zellij |
|---|---|---|
| 分屏 | Ctrl+B % | Alt+n 直接新建 |
| 切换窗格 | Ctrl+B 方向键 | Alt+方向键 或 Ctrl+P + h/j/k/l |
| 新建标签 | Ctrl+B c | Ctrl+t n |
| 搜索/滚动 | Ctrl+B [(进入 copy 模式) | Ctrl+S 直接搜索,方向键滚动 |
| 断开 | Ctrl+B d | Ctrl+O 然后 d |
Zellij 的策略是:不背前缀组合键,而是用单层前缀进入模式,然后在模式里用单字母操作。这对新用户更友好——直觉上更像 vim 的模式设计。
5. 内置浮动终端
写代码时,左边 vim 右边终端,屏幕刚刚好。突然想看个文档或跑条命令试试。tmux 的做法:再 split 一次,两边都变小;看完再 close,布局重新跳一次。
Zellij 的做法:按 Alt+f 打开浮动层,临时操作在上面做,关掉后底下布局没动过:
浮动 pane 持久化运行:隐藏后进程不中断,重新打开还在那里。按 Alt+f 切换显隐,浮动层打开后 Alt+n 在里面创建新 pane。
6. 原生 Web 客户端
这是 Zellij 和 tmux 在架构层面最大的区别。Zellij 内置了一个 Web 服务器,可以把 session 直接 serve 到浏览器。
启动:
zellij web
或者通过 Ctrl+o s 打开分享插件控制。配置文件设 web_server true 则每次启动自动开启。
然后打开 http://127.0.0.1:8082/<session-name> 就能在浏览器里操作终端。浏览器访问需要 token 认证,HTTPS 可配置。从 v0.44.0 开始,终端也能直接通过 HTTPS attach:
zellij attach https://example.com/my-session
zellij watch my-session # 只读模式
这对几个场景特别有用:
- 教学和演示:开一个只读分享链接,学生浏览器打开就能看,不用装任何东西
- 远程工作:不需要 SSH 隧道、不需要 Nginx 反代,Zellij 自己就是 Web 服务器
- 团队协作:多人 attach 同一 session,每人有自己的光标,互不影响
- 手机临时检查:浏览器打开 session 看一眼就跑,不用掏电脑
tmux 想做同样的事需要自己搭 Web 服务、配 WebSocket 代理、管理证书。Zellij 把这些都内置了。
什么时候应该用 Zellij
- 新用户:不想花时间配 tmux,希望装完就能用
- 团队:用布局文件统一开发环境配置,git 管理共享
- 远程/教学场景:Web 客户端和只读分享省掉一堆基础设施
- 插件开发者:对 WASM 插件生态感兴趣,想在终端里嵌入自定义 UI
什么时候继续用 tmux
- 服务器场景:tmux 是几乎所有发行版的默认包,而 Zellij 需要额外安装
- 极简主义:tmux 的 binary 比 Zellij 小得多(~1MB vs ~20MB),只需要终端最基础的功能
- 存量配置:已经有了完善的
.tmux.conf和工作流,迁移成本大于收益
配置
零配置可用,但想改也不麻烦。配置用 KDL 格式,比 tmux 的 set -g 语法更结构化。主题内置 20+ 套(catppuccin、gruvbox、dracula、nord…),直接换名字就行。
总结
Zellij 不是 tmux 的替代品——它是终端复用器这个品类的一次重新设计。tmux 的定位是"工具",Zellij 的定位更接近"环境"。它牺牲了一点轻量性和普及度,换来了更好的开箱体验、声明式布局、插件生态和原生 Web 访问。
如果 tmux 工作流已经炉火纯青,不需要换。如果每次配 tmux 都觉得烦,或者想让团队成员复用一致的终端布局,Zellij 值得花一下午试试。
项目地址:github.com/zellij-org/zellij,Rust 编写,MIT 协议。