Zellij 提供了强大的命令行操作接口,让你可以在不离开终端的情况下精确控制面板、标签页和会话。本文将全面介绍 zellij run、zellij edit 和 zellij action 三个核心命令的所有用法。
一、zellij run — 在新面板中运行命令
zellij run 可以在当前 Zellij 会话中创建一个新面板并运行指定命令。
基本用法
zellij run -- htop
zellij run -- cargo build
-- 用于分隔 Zellij 选项和要运行的命令及其参数。
完整选项一览
zellij run [选项] -- <命令> [参数...]
| 选项 | 说明 |
|---|---|
-b / --borderless | 创建无边框面板 |
-f / --floating | 创建浮动面板 |
-n <名称> / --name | 为新面板设置名称 |
-d <方向> / --direction | 面板创建方向:right / down / left / up / horizontal / vertical |
--cwd <目录> | 指定面板的工作目录 |
--stacked | 以堆叠方式创建面板(不影响其他面板布局) |
-i / --in-place | 在当前面板位置原地替换 |
-c / --close-on-exit | 命令退出时自动关闭面板 |
-s / --start-suspended | 以挂起状态启动面板 |
浮动面板坐标
创建浮动面板时,可以精确指定位置和尺寸:
zellij run -f \
--x 10 --y 5 \
--width "60%" --height "40%" \
-- htop
--x:左上角的列坐标--y:左上角的行坐标--width:宽度(百分比或固定值)--height:高度(百分比或固定值)
阻塞运行
某些场景下你需要等待命令完成后才继续执行后续操作:
# 阻塞等待命令完成(无论成功或失败)
zellij run --blocking -- cargo build
# 仅在命令成功退出时继续
zellij run --block-until-exit-success -- cargo test
--blocking 会阻塞终端直到命令结束。--block-until-exit-success 在命令返回非零退出码时会报错。这些选项在脚本编程中特别有用,将在脚本编程一文中详细讨论。
二、zellij edit — 在新面板中打开编辑器
zellij edit 在新面板中启动编辑器打开指定文件:
zellij edit src/main.rs
zellij edit -l 42 src/main.rs # 打开并跳到第 42 行
zellij edit -f src/main.rs # 在浮动面板中打开
zellij edit -i README.md # 原地替换当前面板
完整选项
| 选项 | 说明 |
|---|---|
-l <行号> / --line | 打开文件后跳转到指定行 |
-f / --floating | 在浮动面板中打开编辑器 |
-i / --in-place | 在当前面板位置原地替换打开 |
-d <方向> / --direction | 面板创建方向 |
-b / --borderless | 无边框面板 |
-c / --close-on-exit | 退出编辑器时关闭面板 |
三、快捷别名
Zellij 为常用命令提供了简短的别名,在脚本和日常使用中可以减少打字量:
| 别名 | 完整命令 | 用途 |
|---|---|---|
zr | zellij run | 在新面板中运行命令 |
zrf | zellij run -f | 在浮动面板中运行命令 |
ze | zellij edit | 在新面板中编辑文件 |
使用示例:
# 在新面板中运行 htop
zr -- htop
# 在浮动面板中运行 git status
zrf -- git status
# 在新面板中编辑文件
ze src/main.rs
四、zellij action 命令全览
zellij action 是 Zellij 最强大的命令行接口,提供了对面板、标签页、会话等所有元素的完整控制。
基本语法
zellij action <子命令> [选项]
默认情况下,action 命令作用于当前活跃的 Zellij 会话。如果需要指定目标会话,使用 -s <会话名> 选项:
zellij action -s my-session list-panes
面板操作
| 子命令 | 说明 |
|---|---|
new-pane | 创建新面板,支持 -d(方向)、-f(浮动)、-b(无边框)等选项 |
close-pane | 关闭指定面板,需通过 --pane-id 指定目标 |
focus-pane-id <id> | 将焦点切换到指定 ID 的面板 |
toggle-pane-embed-or-floating | 在嵌入面板和浮动面板之间切换 |
set-pane-color | 设置面板颜色(--bg、--fg 等) |
change-floating-pane-coordinates | 修改浮动面板的位置和尺寸(--x、--y、--width、--height) |
send-keys <文本> | 向指定面板发送按键序列 |
write-chars <字符> | 向当前面板写入字符 |
paste <内容> | 向面板粘贴文本内容 |
send-keys 支持特殊按键表示,如 Enter、Ctrl+c、Escape 等:
# 向面板发送 Ctrl+c 中断信号
zellij action send-keys --pane-id 1 Ctrl+c
# 发送命令并回车执行
zellij action send-keys --pane-id 2 "cargo test" Enter
阻塞面板操作
多个 action 子命令支持阻塞选项,用于脚本编程:
- --blocking:阻塞等待 action 完成
- --block-until-exit-success:阻塞直到命令成功退出
- --block-until-exit-failure:阻塞直到命令失败退出
标签页操作
| 子命令 | 说明 |
|---|---|
new-tab | 创建新标签页,支持 -n(命名)、-l(布局)选项 |
close-tab | 关闭当前标签页 |
go-to-tab <索引> | 切换到指定索引的标签页(从 1 开始) |
rename-tab <名称> | 重命名当前标签页 |
# 创建命名标签页并使用布局
zellij action new-tab -n "测试" -l dev
# 切换到第 3 个标签页
zellij action go-to-tab 3
滚动和屏幕捕获
| 子命令 | 说明 |
|---|---|
dump-screen | 输出当前面板的屏幕内容(包括滚动缓冲区),非常适合脚本解析 |
edit-scrollback | 在编辑器中打开当前面板的滚动缓冲区内容 |
scroll-to-top | 滚动到面板内容的最顶部 |
scroll-to-bottom | 滚动到面板内容的最底部 |
scroll-up / scroll-down | 向上/向下滚动一行 |
page-scroll-up / page-scroll-down | 向上/向下滚动一页 |
clear | 清除当前面板的屏幕内容和滚动缓冲区 |
dump-screen 是脚本编程中的核心命令,它将面板内容以纯文本形式输出到标准输出:
# 获取面板内容并搜索关键词
zellij action dump-screen | grep "ERROR"
# 保存面板输出到文件
zellij action dump-screen > output.log
会话管理
| 子命令 | 说明 |
|---|---|
rename-session <名称> | 重命名当前会话 |
save-session | 手动保存当前会话的布局状态 |
switch-session <名称> | 切换到另一个会话 |
detach | 分离当前会话 |
状态查询
| 子命令 | 说明 |
|---|---|
list-panes | 列出当前会话中所有面板的信息 |
list-tabs | 列出当前会话中所有标签页的信息 |
current-tab-info | 显示当前标签页的详细信息 |
list-clients | 列出所有连接到当前会话的客户端 |
# 以 JSON 格式获取面板列表(便于脚本解析)
zellij action list-panes
# 查看当前标签页信息
zellij action current-tab-info
布局控制
| 子命令 | 说明 |
|---|---|
override-layout <布局名> | 临时使用指定布局覆盖当前标签页的布局 |
next-swap-layout | 切换到下一个交换布局 |
插件操作
| 子命令 | 说明 |
|---|---|
launch-plugin <路径> | 启动指定的 Zellij 插件 |
start-or-reload-plugin <路径> | 启动插件,如果已运行则重新加载 |
以上命令涵盖了 Zellij 通过命令行可以执行的所有操作。掌握这些命令后,你就可以编写脚本来自动化各种工作流,这是下一篇"脚本编程与程序化控制"将要探讨的主题。