#input-stream #command-output #pager #less #output-stream #more #keyboard-shortcuts

bin+lib streampager

streampager 是用于命令输出或大文件的分页器

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 文本处理

Download history 140/week @ 2024-03-11 134/week @ 2024-03-18 73/week @ 2024-03-25 102/week @ 2024-04-01 81/week @ 2024-04-08 51/week @ 2024-04-15 119/week @ 2024-04-22 170/week @ 2024-04-29 85/week @ 2024-05-06 101/week @ 2024-05-13 202/week @ 2024-05-20 59/week @ 2024-05-27 116/week @ 2024-06-03 67/week @ 2024-06-10 39/week @ 2024-06-17 102/week @ 2024-06-24

每月 327 次下载

MIT 许可证

340KB
7.5K SLoC

streampager (sp)

Documentation Build Status

用于命令输出或大文件的分页器。

streampager 是一个库,它实现了用于逐页浏览数据流的一般的分页器。

其主要程序 sp 接受来自 stdin 的流输入进行分页。它还可以接受来自其他流的输入,以便分别显示多个命令及其错误流的输出。它还可以显示文件内容。

它还提供了 spp,它将参数作为命令运行,捕获其输出和错误流进行分页。

streampager 中按 h 显示键盘快捷键。按 q 退出。

截图

streampager running in a terminal showing this README file

sp 的基本用法

如果没有参数调用,sp 从 stdin 读取,并期望作为管道中的最后一个命令调用

my_command | sp

默认情况下,streampager 将立即进入全屏模式并分页输入。

这可以自定义

此行为可以自定义

  • 使用 -X 选项可以防止全屏模式。相反,输出将直接显示在终端上,直到收到一个全屏的输入,或者按 Space
  • 使用 -D <SEC> 选项会导致 streampager 等待一段时间,看输入流是否在收到少于全屏的输出后提前终止。如果是这样,streampager 将直接将其显示在终端并退出。如果输入流产生多于全屏的数据,延迟过期,或者按 Spacestreampager 将进入全屏模式。
  • -F 选项重新启用立即全屏模式,如果 streampager 配置文件中已选择不同的模式。

屏幕右下角的指示器显示输入流是否仍然连接,以及是否正在加载数据。

sp 还可以通过提供文件名作为命令行参数来显示文件。

附加流

sp 可以在不同文件描述符上分屏显示多个输入流。这些附加流可以通过 --fd 选项传递。

错误流和进度指示器

对于错误输出流,也可以使用 --error-fd 选项提供输入流。除了在它们自己的屏幕上显示外,错误流的最后 8 行也显示在对应主流的屏幕底部。

可以通过 --progress-fd 选项提供用于进度指示器的附加流。此输入流期望接收以 ASCII 换页字符(\f\x0C)终止的进度更新(例如进度条)。sp 将在屏幕底部显示最近接收到的进度指示器。

进度指示器页面不应包含用于移动光标或清除显示部分的控制代码。影响输出颜色或样式的控制代码被接受并传递到终端。

使用 sp 分页其输出的调用进程还可以通过设置环境变量 PAGER_ERROR_FDPAGER_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:退出。
  • hF1 显示帮助屏幕。
  • Esc:关闭帮助或任何打开的提示。

导航

  • 光标键:移动一行或四列。
  • Shift + 光标键:移动屏幕的四分之一。
  • Page DownSpace:向下移动一整页。
  • Page UpBackspace:向上移动一整页。
  • HomeEnd:移动到文件的顶部或底部。
  • ::转到文件的行号或百分比位置。
  • []:切换到前一个或下一个文件。

演示

  • #:切换行号的显示。
  • \:切换行和单词换行。

待办事项

  • 行结束符检测和处理(在具有混合行结束符的文件中显示 <CR>)。
  • 支持组合字符序列(例如 "لآ")
  • 将内容保存到磁盘上的文件(键:s

依赖项

~20–31MB
~550K SLoC