Zellij CLI 操作:run、edit 与 action 全览

Zellij 提供了强大的命令行操作接口,让你可以在不离开终端的情况下精确控制面板、标签页和会话。本文将全面介绍 zellij runzellij editzellij 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 为常用命令提供了简短的别名,在脚本和日常使用中可以减少打字量:

别名完整命令用途
zrzellij run在新面板中运行命令
zrfzellij run -f在浮动面板中运行命令
zezellij 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 支持特殊按键表示,如 EnterCtrl+cEscape 等:

# 向面板发送 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 通过命令行可以执行的所有操作。掌握这些命令后,你就可以编写脚本来自动化各种工作流,这是下一篇"脚本编程与程序化控制"将要探讨的主题。

返回博客列表