跳转到内容

Selector 和 Filter

多个 sivtr 命令共享一套小语法,用于选择和裁剪文本。本页把这些规则集中说明。

Selector 用来选择最近的命令块或 AI 单元。

Selector含义
省略最新匹配项
1最新匹配项
2第二新的匹配项
2..4一段最近匹配项

示例:

Terminal window
sivtr copy out
sivtr copy out 2
sivtr copy in 2..4
sivtr copy claude out 2
sivtr copy codex 2..4

Selector 从新到旧计数,因为最常复用的目标通常刚刚发生。

diff 使用同样的 recency 编号,但左右两边都必须解析成单个命令块:

Terminal window
sivtr diff 1 2
sivtr diff 3 1 --block

2..4 这种范围 selector 不能作为 diff 的一边。

Agent provider 命令可以把 session 选择和 item selector 分开:

Terminal window
sivtr copy codex --session 2
sivtr copy codex --session 019df7fb
sivtr copy claude out --session 3

--session N 选择 picker 流程中同一排序下第 N 新的可选 session。--session ID 匹配 session id 或 id 前缀。

--regex <PATTERN> 会在选中文本组装后只保留匹配行:

Terminal window
sivtr copy out --regex panic
sivtr copy claude tool --regex "error|failed"

当 shell 可能解释正则字符时,请加引号。

--lines <SPEC> 会在选中文本组装后保留 1-based 行范围:

Terminal window
sivtr copy out --lines 10:20
sivtr copy out --lines 1,3,8:12
sivtr copy codex all --lines 1:40

常见形式:

Spec含义
5第 5 行
1:5第 1 到第 5 行
10:20第 10 到第 20 行
1,3,8:12第 1、3、8 到 12 行

同时设置 --regex--lines 时,--regex 先运行,--lines 再作用于过滤后的结果。

WorkSet 命令(searchfilternavzoomshowwork recordswork parts)共享 source 形式:

Source含义
@last最近一次 WorkSet 命令产生的 WorkSet。
@name通过 --save namesivtr var set name 保存的命名 WorkSet。
@name[1,3..5]已保存 WorkSet 的 1-based 切片。离散 selector 保留请求顺序。
@从 stdin 读取 WorkSet JSON。不要把 --refs 文本管给 @

WorkSet 包含 materialized records 和 active anchorsfilter 缩小 anchors,nav 移动 anchors,var 记住 anchors,show 渲染 anchors。

sivtr nav <source> <motion> 使用一套小的确定性 motion 语法。它不会默认展开 child。

Motion含义
<父级。part/line 到 record;record 到所属 session records。
>N第 N 个 child,1-based。record 的 children 是 parts。
+N当前层级向后移动 N 个 sibling。
-N当前层级向前移动 N 个 sibling。
[A..B]当前层级 sibling window。
~所属 session records。

示例:

Terminal window
sivtr nav @hit '<' --refs
sivtr nav @hit '<+1>1' --refs
sivtr nav @hit '<[-2..+2]' --refs
sivtr nav @hit '~' --refs

能复制输入的命令块模式可以重写 prompt:

Terminal window
sivtr copy in --prompt ":"
sivtr copy --prompt ">"

如果 prompt 结尾没有空白,sivtr 会在命令前插入一个空格。

当 source 有保存过的 ANSI 内容时,用 --ansi 复制 ANSI-decorated text:

Terminal window
sivtr copy out --ansi

默认仍是纯文本,因为它更适合搜索、issue 报告和 AI prompt。

search --format json 会输出 show 可以打印的 ref:

source/session[/dialogue[/line]]

示例:

Terminal window
sivtr show claude/<session>
sivtr show claude/<session>/<dialogue>
sivtr show claude/<session>/<dialogue>/<line>
sivtr show terminal/current/<block>
sivtr show terminal/current/<block>/<line>

Dialogue 和 line 索引都是 1-based。