Skip to main content

zellij

  • zellij-org/zellij
    • MIT, Rust, WebAssembly
    • Zellij 是一个用 Rust 编写的新一代终端工作区和复用器(Terminal Multiplexer)。它旨在提供“开箱即用”的体验,具有直观的 UI、布局系统(Layouts)和基于 WebAssembly 的插件系统。
  • 参考
brew install zellij
cargo install --locked zellij

zellij

zellij list-sessions
zellij action list-panes
zellij action list-panes --json
# 0 NAME ID
echo $ZELLIJ $ZELLIJ_SESSION_NAME $ZELLIJ_PANE_ID

zellij attach <SESSION_NAME>

# 远程控制操作
zellij action

# 常用快捷键 (默认 Ctrl+g 进入 Locked 模式,Ctrl+p 进入 Pane 模式)
# Ctrl + n: 下一个布局
# Ctrl + h: Pane 模式
# Ctrl + t: Tab 模式

# ac=action
# rename-tab|pane|session
zellij ac rename-pane "abc"

# 获取屏幕内容
zellij ac dump-screen
# --full --ansi
zellij ac dump-screen out.txt

# 输入文字和按键
zellij ac write-chars "ls -l"
zellij ac send-keys "Enter"

# 实时监听终端输出
zellij subscribe --ansi

zellij action dump-layout > session.kdl # 得到 layout
zellij action override-layout session.kdl --retain-existing-terminal-panes # 恢复

# 会话管理
zellij -s SESSION # 会话名字
zellij -s SESSION -n NAME # 会用 ~/.config/zellij/layout/NAME.kdl
zellij attach -c SESSION # 没有则会创建
zellij --session SESSION --layout session.kdl

# 分屏
zellij action new-pane -d down # 水平分屏
zellij action new-pane -d right # 垂直分屏
flagfor
-p, --pane-id <PANE_ID>窗口 ID (可通过 list-panes 获取);用于 subscribeaction
-s, --session <SESSION>指定会话名称;用于连接特定会话或发送指令
actionfor
new-pane创建新窗格 (可指定 -d down/right)
close-pane关闭当前窗格
new-tab创建新标签页 (可指定 -n name)
close-tab关闭当前标签页
focus-next-pane聚焦到下一个窗格
move-focus [dir]按方向移动焦点 (left, right, up, down)
go-to-next-tab切换到下个标签页
toggle-fullscreen切换全屏模式
toggle-floating-panes切换悬浮窗显示
rename-tab <NAME>重命名当前标签页
rename-pane <NAME>重命名当前窗格
rename-session <NAME>重命名当前会话
edit <FILE>在新窗格中用默认编辑器打开文件
detach断开当前会话
switch-mode <MODE>切换输入模式 (locked, pane, tab, etc.)
dump-screen <FILE>将当前屏幕内容导出到文件
write-chars <STR>向当前窗格写入字符串
send-keys <KEYS>发送快捷键按键 (如 "Ctrl a", "Enter")
commandfor
Alt + n新建窗格 (New Pane)
Alt + f切换全屏 (Toggle Fullscreen)
Alt + i切换到下一个窗格 (Next Pane)
Alt + o切换到上一个窗格 (Previous Pane)
Alt + h/j/k/l移动焦点 (左/下/上/右)
Alt + [ / ]切换标签页 (Tab)
Alt + w切换堆叠模式 (Toggle Stacked)
Ctrl + gLocked 模式 (禁用快捷键,防冲突)
Ctrl + pPane 模式 (窗格管理:新建、重命名、移动等)
Ctrl + tTab 模式 (标签页管理)
Ctrl + nResize 模式 (调整窗格大小)
Ctrl + hMove 模式 (调整窗格位置)
Ctrl + sSearch 模式 (搜索、过滤内容)
Ctrl + oSession 模式 (会话管理:分离、重命名等)
Ctrl + q退出 Zellij
layout {
tab name="Frontend" cwd="./apps/web" {
pane split_direction="vertical" {
pane command="npm" args="run" "dev"
pane command="git" args="status"
}
}
tab name="Backend" cwd="./apps/api-server" {
pane command="go" args="run" "main.go"
}
tab name="DB Monitor" cwd="./docker" {
pane command="lazydocker"
}
}

FAQ

zellij vs Tmux

Pros

  • 更现代化
  • 更友好
  • 性能更好
  • 插件 wasm
  • YAML/KDL 窗口布局
  • stack/floating/tabs

Cons

  • 不支持 CC
  • 跨session操作不好
  • 没有 server 概念

  • tmux window -> zellij tab