版本: 基于 Zellij 0.41.x 官方文档整理
更新时间: 2026年3月

SSH 断开,正在跑的构建进程没了。三个终端窗口,每个都要手动切换。tmux 配置文件写了三年,还是记不住那些快捷键。

有没有一个工具,开箱即用,不需要花时间学,就能搞定这些?

Zellij 就是答案。

📋 目录

  1. 什么是 Zellij
  2. 核心特性一览
  3. 安装指南
  4. 配置基础
  5. 基本使用技巧
  6. 布局与自动化
  7. 会话管理
  8. 高级功能详解
  9. 与 tmux 对比
  10. 实用配置示例
  11. 常见问题

什么是 Zellij

Zellij 是一个用 Rust 编写的终端工作空间,定位为现代版终端复用器(Terminal Multiplexer)。类似 tmux 和 screen,但设计理念不同:

  • 开箱即用:不写配置文件也能高效工作
  • 现代 UI:浮动窗格、堆叠窗格、可视化界面
  • 可扩展:WebAssembly 插件系统,任何语言都能写插件
  • 协作友好:内置 Web 客户端,多人实时协作

名字源自阿拉伯语”زليج”,一种精美的马赛克瓷砖工艺——把多个窗格拼接成精美的整体工作空间。


核心特性一览

浮动窗格

1
2
3
4
5
6
# 按 Alt+f 切换浮动窗格模式
# 浮动窗格可以:
# - 用鼠标或键盘移动位置
# - 自由调整大小
# - 固定在最上层(适合监控命令)
# - 平铺窗格 ⇄ 浮动窗格 相互转换

浮动窗格是”一等公民”。在里面跑一个命令,隐藏后重新打开,命令还在后台运行。

堆叠窗格

把多个窗格堆叠在一起:

1
2
3
4
# 适合场景:
# - 编辑器多个 buffer 同时可见
# - 监控多个命令不占用水平空间
# - 按任务/上下文组织工作区

用方向键在堆叠窗格间导航,动态调整大小。

命令窗格

命令不只是输出,而是”一等公民”:

1
2
3
4
5
# 命令窗格特性:
# - 查看命令退出码
# - 单按 Enter 重新运行
# - 可暂停启动,按需触发
# - 适合构建命令、测试、开发服务器

Session 复活

关闭的会话可以完整恢复,包括窗格结构和运行的命令。即使重启系统后也能找回之前的工作状态。


安装指南

一键试用(不安装)

1
2
3
4
5
6
7
8
# bash / zsh
bash <(curl -L https://zellij.dev/launch)

# fish
bash (curl -L https://zellij.dev/launch | psub)

# PowerShell
irm https://zellij.dev/launch.ps1 | iex

Cargo 安装

1
2
3
4
5
# 编译安装(需要 Rust 环境)
cargo install --locked zellij

# 预编译二进制(更快)
cargo binstall zellij

包管理器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# macOS
brew install zellij

# Arch Linux
pacman -S zellij

# Debian/Ubuntu
sudo apt install zellij

# Fedora
sudo dnf install zellij

# Nix
nix-env -iA nixpkgs.zellij

手动下载

Release 页面 下载预编译二进制:

1
2
3
4
5
6
7
# Linux / macOS
tar -xvf zellij*.tar.gz
chmod +x zellij
./zellij

# 添加到 PATH
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

查找优先级

  1. --config-dir 命令行参数
  2. ZELLIJ_CONFIG_DIR 环境变量
  3. $HOME/.config/zellij
  4. 系统默认位置:
    • Linux: /home/alice/.config/zellij
    • macOS: /Users/Alice/Library/Application Support/org.Zellij-Contributors.Zellij
  5. /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 进入选择模式

分屏操作

1
2
3
4
5
# Ctrl+o 然后按:
n # 右侧分屏
d # 下方分屏
+/- # 调整大小
hjkl # 切换窗格

标签页管理

1
2
3
4
# Ctrl+o 然后按:
t # 新建标签页
w # 会话管理器(可切换标签)
1-9 # 快速切换到标签页 1-9

布局与自动化

布局文件

布局是预定义的窗格/标签/命令/插件组合,用 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
# Ctrl+o + w 打开会话管理器
# 功能:
# - 快速切换运行中的会话
# - 创建命名会话
# - 管理后台会话
# - 切换时保留上下文

会话操作

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
# 启动 Web 服务
zellij options --web-server true --web-server-port 8082

# 浏览器访问
http://localhost:8082/my-session

# 特性:
# - 不需要终端模拟器
# - 内置认证
# - 持久会话 URL
# - 远程共享会话

远程会话访问

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
# Rust 插件开发(首选)
// 使用 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

多窗格批量操作

1
2
3
4
5
6
# Alt + 左键选择多个窗格(拖拽选择)
# 批量操作:
# - 关闭多个窗格
# - 移动到新标签页
# - 堆叠在一起
# - 切换焦点

编辑 Scrollback

1
2
3
4
5
6
# Ctrl+s + e 编辑当前窗格的输出历史
# 用 $EDITOR (vim/nvim/emacs) 打开
# 适合:
# - 复制长输出
# - 搜索历史记录
# - 保存输出到文件

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
# Ctrl+o 然后按:
q # 退出当前会话(会话保存)
Q # 退出并杀死会话

# 或直接
zellij kill-session my-session

Q: 如何在启动时自动运行命令?

A: 使用布局文件定义 commandargs

1
2
3
4
pane {
command "nvim"
args "README.md"
}

Q: 如何查看所有可用快捷键?

1
2
# 在 Zellij 内按 Ctrl+o 然后 ?
# 会显示快捷键帮助面板

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 插件,全语言支持

推荐场景

  1. 日常开发:替代 tmux,更快上手
  2. 远程协作:Web 客户端共享会话
  3. 自动化布局:开发环境一键启动
  4. CI/CD 集成:脚本化终端流程

延伸阅读


💡 提示: 如果你是 tmux 用户,可以把 Zellij 作为补充工具。先从 Web 客户端和布局自动化尝试,逐步迁移核心工作流。不喜欢?随时退回 tmux,两者可以共存。