版本: 基于 Zellij 0.41.x 官方文档整理
更新时间: 2026年3月
SSH 断开,正在跑的构建进程没了。三个终端窗口,每个都要手动切换。tmux 配置文件写了三年,还是记不住那些快捷键。
有没有一个工具,开箱即用,不需要花时间学,就能搞定这些?
Zellij 就是答案。
📋 目录
- 什么是 Zellij
- 核心特性一览
- 安装指南
- 配置基础
- 基本使用技巧
- 布局与自动化
- 会话管理
- 高级功能详解
- 与 tmux 对比
- 实用配置示例
- 常见问题
什么是 Zellij
Zellij 是一个用 Rust 编写的终端工作空间,定位为现代版终端复用器(Terminal Multiplexer)。类似 tmux 和 screen,但设计理念不同:
- 开箱即用:不写配置文件也能高效工作
- 现代 UI:浮动窗格、堆叠窗格、可视化界面
- 可扩展:WebAssembly 插件系统,任何语言都能写插件
- 协作友好:内置 Web 客户端,多人实时协作
名字源自阿拉伯语”زليج”,一种精美的马赛克瓷砖工艺——把多个窗格拼接成精美的整体工作空间。
核心特性一览
浮动窗格
浮动窗格是”一等公民”。在里面跑一个命令,隐藏后重新打开,命令还在后台运行。
堆叠窗格
把多个窗格堆叠在一起:
用方向键在堆叠窗格间导航,动态调整大小。
命令窗格
命令不只是输出,而是”一等公民”:
Session 复活
关闭的会话可以完整恢复,包括窗格结构和运行的命令。即使重启系统后也能找回之前的工作状态。
安装指南
一键试用(不安装)
1 2 3 4 5 6 7 8
| bash <(curl -L https://zellij.dev/launch)
bash (curl -L https://zellij.dev/launch | psub)
irm https://zellij.dev/launch.ps1 | iex
|
Cargo 安装
1 2 3 4 5
| cargo install --locked zellij
cargo binstall zellij
|
包管理器
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| brew install zellij
pacman -S zellij
sudo apt install zellij
sudo dnf install zellij
nix-env -iA nixpkgs.zellij
|
手动下载
从 Release 页面 下载预编译二进制:
1 2 3 4 5 6 7
| tar -xvf zellij*.tar.gz chmod +x zellij ./zellij
mv zellij ~/.local/bin/
|
配置基础
配置文件位置
Zellij 使用 KDL (KDL Document Language) 作为配置语言:
1 2 3 4 5
| mkdir ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl
|
查找优先级:
--config-dir 命令行参数
ZELLIJ_CONFIG_DIR 环境变量
$HOME/.config/zellij
- 系统默认位置:
- Linux:
/home/alice/.config/zellij
- macOS:
/Users/Alice/Library/Application Support/org.Zellij-Contributors.Zellij
/etc/zellij (系统级)
绕过配置文件
1 2 3 4 5 6 7 8
| zellij --config /path/to/config.kdl
export ZELLIJ_CONFIG_FILE=/path/to/config.kdl
zellij options --clean
|
配置热更新
Zellij 会监听配置文件变化,大部分设置立即生效,无需重启。
基本使用技巧
首次启动
1 2 3 4 5 6 7 8
| zellij
zellij attach
zellij -l welcome
|
快捷键基础
Zellij 使用 Lock Mode 设计(类似 Vim 模式):
1 2 3
| 默认状态: 直接输入命令(无拦截) Ctrl+o: 进入操作模式(所有快捷键生效) Esc: 退出操作模式
|
常用操作(在操作模式下,即先按 Ctrl+o):
| 快捷键 |
动作 |
n |
新建窗格(右) |
d |
新建窗格(下) |
f |
切换浮动窗格 |
x |
关闭当前窗格 |
q |
退出 Zellij |
h/j/k/l |
切换窗格(左/下/上/右) |
+ / - |
调整窗格大小 |
t |
新建标签页 |
w |
打开会话管理器 |
s |
进入选择模式 |
分屏操作
标签页管理
布局与自动化
布局文件
布局是预定义的窗格/标签/命令/插件组合,用 KDL 文件描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // ~/.config/zellij/layouts/dev.kdl
layout { tab name="editor" { pane size=1 borderless=true { plugin location="zellij:tab-bar" } pane split_direction="vertical" { pane size="70%" command="nvim" pane size="30%" split_direction="horizontal" { pane command="git" { args "status" } pane } } pane size=2 borderless=true { plugin location="zellij:status-bar" } } }
|
启动布局
1 2 3 4 5
| zellij --layout dev
default_layout "dev"
|
命令窗格布局
1 2 3 4 5 6 7 8 9 10 11 12 13
| // 布局中预定义命令 pane { name "tests" command "make" args "test" start_suspended true # 启动时暂停,按需触发 }
pane { name "build" command "cargo" args "build" }
|
窗格模板
避免重复定义:
1 2 3 4 5 6 7 8 9 10 11
| // 定义模板 pane_template name="monitor-pane" { size "20%" borderless true }
// 使用模板 pane name="logs" use="monitor-pane" { command "tail" args "-f" "logs/app.log" }
|
会话管理
会话管理器
会话操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| zellij -s my-project
zellij attach my-project
zellij attach -c new-session
zellij list-sessions
zellij kill-session my-project
zellij kill-all-sessions
|
会话复活
1 2 3 4 5 6 7 8
| zellij -l welcome
|
高级功能详解
Web 客户端
1 2 3 4 5 6 7 8 9 10 11
| zellij options --web-server true --web-server-port 8082
http://localhost:8082/my-session
|
远程会话访问
1 2 3 4 5
| zellij attach https://my-server:8082/my-session
zellij options --read-only-user-permissions true
|
插件系统
Zellij 界面本身就是插件组成:
- Tab Bar: 标签栏
- Status Bar: 状态栏
- Session Manager: 会话管理界面
- Welcome Screen: 启动选择器
- Filepicker: 文件选择器(Strider)
开发插件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // 使用 zellij-plugin crate use zellij_tile::prelude::*;
// 输出到 pane print!("Hello from plugin!");
// 注册事件监听 subscribe_to_events(&[ EventType::KeyPress, EventType::Mouse, ]);
// WebAssembly 单文件分发 cargo build --target wasm32-wasi --release
|
多窗格批量操作
CLI 脚本化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| zellij action new-pane \ --block-until-exit-success \ --name "tests" \ -- make test
zellij subscribe --pane-id 123
zellij list-panes --json zellij list-tabs --json zellij current-tab-info --json
zellij attach --create-background my-session
|
与 tmux 对比
| 维度 |
tmux |
Zellij |
| 开箱即用 |
❌ 需配置 |
✅ 默认好用 |
| 学习曲线 |
陡峭 |
平缓(模式切换更直观) |
| UI 风格 |
传统终端风格 |
现代 UI(浮动/堆叠) |
| 配置格式 |
.tmux.conf |
KDL(结构更清晰) |
| 插件扩展 |
有限(脚本) |
WebAssembly(全语言) |
| 协作功能 |
基础共享 |
Web 客户端 + 实时协作 |
| 会话复活 |
❌ |
✅ 完整恢复 |
| 快捷键冲突 |
常见(需要改键) |
模式切换(默认不冲突) |
| 性能 |
极快 |
快(Rust) |
| 社区生态 |
成熟 |
发展中 |
迁移建议:
- 新手:直接用 Zellij
- tmux 老用户:可以共存,逐步迁移功能
- 团队协作:Zellij 的 Web 客户端更方便
实用配置示例
开发环境布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // ~/.config/zellij/layouts/dev.kdl layout { tab name="main" { pane split_direction="vertical" { pane size="70%" edit="src/main.rs" pane size="30%" split_direction="horizontal" { pane name="git" command="git" { args "status" "-sb" } pane name="tests" command="cargo" { args "test" "--watch" } } } } tab name="logs" { pane command="tail" { args "-f" "logs/*.log" } } }
|
Vim 风格快捷键
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // ~/.config/zellij/config.kdl keybinds { normal { // 解绑默认的 hjkl,避免与 Vim 冲突 unbind "Ctrl+h" "Ctrl+j" "Ctrl+k" "Ctrl+l" } locked { // Leader 风格(类似 tmux prefix) bind "Ctrl+a" { bind "n" { NewPane Right; } bind "d" { NewPane Down; } bind "x" { CloseFocus; } bind "h" { MoveFocus Left; } bind "j" { MoveFocus Down; } bind "k" { MoveFocus Up; } bind "l" { MoveFocus Right; } } } }
|
CI 管道布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| // ci-layout.kdl layout { pane { name "tests" command "make" args "test" start_suspended true } pane { name "build" command "make" args "build" start_suspended true } pane { name "deploy" command "./deploy.sh" start_suspended true } }
// 脚本触发 // zellij attach ci-session // 然后手动按 Enter 依次运行
|
远程开发配置
1 2 3 4 5 6 7 8 9 10 11 12
| // 远程服务器配置 // ~/.config/zellij/config.kdl session_serialization true pane_viewport_serialization true scrollback_lines_to_serialize 10000
// Web 服务 web_server true web_server_port 8082 web_server_ssl true web_server_ssl_certificate "/path/to/cert.pem" web_server_ssl_key "/path/to/key.pem"
|
常见问题
Q: 快捷键和 Vim/Nvim 冲突?
A: 使用 Lock Mode(先按 Ctrl+o),默认不拦截任何键。或者配置 Leader 风格:
1 2 3 4 5
| // 类似 tmux 的 prefix key bind "Ctrl+a" { bind "n" { NewPane; } // ... }
|
Q: 如何退出 Zellij?
1 2 3 4 5 6
| q Q
zellij kill-session my-session
|
Q: 如何在启动时自动运行命令?
A: 使用布局文件定义 command 和 args:
1 2 3 4
| pane { command "nvim" args "README.md" }
|
Q: 如何查看所有可用快捷键?
Q: 配置文件格式报错?
A: KDL 格式检查:
1 2 3 4 5
| zellij setup --check
zellij options --config ~/.config/zellij/config.kdl
|
Q: 如何自定义主题?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| // ~/.config/zellij/themes/my-theme.kdl themes { my-theme { fg "#cdd6f4" bg "#1e1e2e" black "#45475a" red "#f38ba8" green "#a6e3a1" yellow "#f9e2af" blue "#89b4fa" magenta "#f5c2e7" cyan "#94e2d5" white "#a6adc8" } }
// config.kdl 中引用 theme "my-theme"
|
总结
Zellij 是 tmux 的现代替代品,核心优势:
| 优势 |
说明 |
| 零配置上手 |
不写配置文件也能高效工作 |
| 现代 UI |
浮动窗格、堆叠窗格、可视化界面 |
| 会话持久 |
复活功能让工作状态可恢复 |
| 协作友好 |
Web 客户端、远程访问、多人实时 |
| 可扩展 |
WebAssembly 插件,全语言支持 |
推荐场景:
- 日常开发:替代 tmux,更快上手
- 远程协作:Web 客户端共享会话
- 自动化布局:开发环境一键启动
- CI/CD 集成:脚本化终端流程
延伸阅读
💡 提示: 如果你是 tmux 用户,可以把 Zellij 作为补充工具。先从 Web 客户端和布局自动化尝试,逐步迁移核心工作流。不喜欢?随时退回 tmux,两者可以共存。
Comments