13 个版本
0.10.3 | 2022年9月22日 |
---|---|
0.10.0 | 2021年7月19日 |
0.9.4 | 2021年3月18日 |
0.8.0 | 2020年5月13日 |
0.6.0 | 2020年1月19日 |
#510 in 文本处理
每月 327 次下载
340KB
7.5K SLoC
streampager (sp)
用于命令输出或大文件的分页器。
streampager 是一个库,它实现了用于逐页浏览数据流的一般的分页器。
其主要程序 sp 接受来自 stdin 的流输入进行分页。它还可以接受来自其他流的输入,以便分别显示多个命令及其错误流的输出。它还可以显示文件内容。
它还提供了 spp,它将参数作为命令运行,捕获其输出和错误流进行分页。
在 streampager 中按 h 显示键盘快捷键。按 q 退出。
截图

sp 的基本用法
如果没有参数调用,sp 从 stdin 读取,并期望作为管道中的最后一个命令调用
my_command | sp
默认情况下,streampager 将立即进入全屏模式并分页输入。
这可以自定义
此行为可以自定义
- 使用
-X
选项可以防止全屏模式。相反,输出将直接显示在终端上,直到收到一个全屏的输入,或者按Space
。 - 使用
-D <SEC>
选项会导致 streampager 等待一段时间,看输入流是否在收到少于全屏的输出后提前终止。如果是这样,streampager 将直接将其显示在终端并退出。如果输入流产生多于全屏的数据,延迟过期,或者按Space
,streampager 将进入全屏模式。 -F
选项重新启用立即全屏模式,如果 streampager 配置文件中已选择不同的模式。
屏幕右下角的指示器显示输入流是否仍然连接,以及是否正在加载数据。
sp 还可以通过提供文件名作为命令行参数来显示文件。
附加流
sp 可以在不同文件描述符上分屏显示多个输入流。这些附加流可以通过 --fd
选项传递。
错误流和进度指示器
对于错误输出流,也可以使用 --error-fd
选项提供输入流。除了在它们自己的屏幕上显示外,错误流的最后 8 行也显示在对应主流的屏幕底部。
可以通过 --progress-fd
选项提供用于进度指示器的附加流。此输入流期望接收以 ASCII 换页字符(\f
或 \x0C
)终止的进度更新(例如进度条)。sp 将在屏幕底部显示最近接收到的进度指示器。
进度指示器页面不应包含用于移动光标或清除显示部分的控制代码。影响输出颜色或样式的控制代码被接受并传递到终端。
使用 sp 分页其输出的调用进程还可以通过设置环境变量 PAGER_ERROR_FD
和 PAGER_PROGRESS_FD
来提供这些流的文件描述符。
调用命令
-c
选项会导致 sp 调用指定的命令,并捕获其标准输出和标准错误流作为单独的流。
例如
sp -c "grep -r foo /path"
将运行 grep 并分页其输出。来自 grep 的错误将作为单独的流分页。
-
选项可以多次指定以运行多个命令,并将所有输出作为单独的流分页。
spp 程序将剩余的命令行参数作为单个命令运行。例如
spp grep -r foo /path
与上一个示例等价。
配置
streampager 可以通过位于 $CONFIG_DIR/streampager/streampager.toml
的配置文件进行配置。配置目录因平台而异;在 Linux 上通常是 ~/.config
。
示例配置
interface_mode = "delayed"
scroll_past_eof = true
read_ahead_lines = 20000
startup_poll_input = true
wrapping_mode = "word"
keymap = "mykeymap"
键盘快捷键
streampager 提供了各种常用操作的快捷键,其中许多与 less
兼容。有关完整列表,请参阅帮助屏幕。以下列出了一些最常用的快捷键。
可以通过在 streampager 配置文件中设置 keymap
来覆盖键映射。键映射文件应位于 $CONFIG_DIR/streampager/keymaps/
。
通用
q
:退出。h
或F1
显示帮助屏幕。Esc
:关闭帮助或任何打开的提示。
导航
- 光标键:移动一行或四列。
Shift
+ 光标键:移动屏幕的四分之一。Page Down
或Space
:向下移动一整页。Page Up
或Backspace
:向上移动一整页。Home
和End
:移动到文件的顶部或底部。:
:转到文件的行号或百分比位置。[
和]
:切换到前一个或下一个文件。
演示
#
:切换行号的显示。\
:切换行和单词换行。
待办事项
- 行结束符检测和处理(在具有混合行结束符的文件中显示
<CR>
)。 - 支持组合字符序列(例如 "لآ")
- 将内容保存到磁盘上的文件(键:
s
)
依赖项
~20–31MB
~550K SLoC