{"id":37982933,"url":"https://github.com/flw-cn/ap","last_synced_at":"2026-01-16T18:36:20.375Z","repository":{"id":42025956,"uuid":"456394854","full_name":"flw-cn/ap","owner":"flw-cn","description":"auto-pager -- Just when you were regretting not paging, it's paged!","archived":false,"fork":false,"pushed_at":"2022-08-15T06:37:39.000Z","size":71,"stargazers_count":13,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-15T15:19:12.591Z","etag":null,"topics":["bash","cli-tool","fish","shell","terminal","zsh"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flw-cn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-07T07:07:08.000Z","updated_at":"2023-05-15T14:50:56.000Z","dependencies_parsed_at":"2022-08-12T02:40:56.751Z","dependency_job_id":null,"html_url":"https://github.com/flw-cn/ap","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/flw-cn/ap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flw-cn%2Fap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flw-cn%2Fap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flw-cn%2Fap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flw-cn%2Fap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flw-cn","download_url":"https://codeload.github.com/flw-cn/ap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flw-cn%2Fap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28480971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli-tool","fish","shell","terminal","zsh"],"created_at":"2026-01-16T18:36:19.629Z","updated_at":"2026-01-16T18:36:20.327Z","avatar_url":"https://github.com/flw-cn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ap -- auto-pager\n\nap 是一个 shell 工具，可以让其它 shell 命令的输出能够自动进入交互翻页模式。\n\nap 由两部分组成，一个 Go 语言编写的二进制程序，负责捕获命令的输出并支持翻页，\n和一组 shell 脚本，负责为用户指定的命令清单创建与之同名的 wrapper。\n\n经过 wrap 之后的命令用法与原来相同，不应当改变用户操作习惯，不会给用户造成困扰。\n\n## 安装\n\n```\ngo install github.com/flw-cn/ap@master\n```\n\n## 配置\n\n* [bash](#bash)\n* [fish](#fish)\n* [zsh](#zsh)\n\n### bash\n\n在你的 `~/.bashrc` 里加入下面内容：\n\n```sh\neval \"$(ap --bash)\"\n```\n\nap 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nAUTO_PAGER_CMDS=(go cargo make)\neval \"$(ap --bash)\"\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nAUTO_PAGER_CMDS_EXTRA=(ps last)\neval \"$(ap --bash)\"\n```\n\n另外，ap 也可以和 [grc](https://github.com/garabik/grc) 一起工作，在 macOS  下可以使用 Homebrew 安装 grc:\n\n```sh\nbrew install grc\n```\n\nap + grc 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nAUTO_PAGER_CMDS_WITH_GRC=(ps last dig diff)\neval \"$(ap --bash)\"\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nAUTO_PAGER_CMDS_WITH_GRC_EXTRA=(ps last)\neval \"$(ap --bash)\"\n```\n\n\n\n另外，环境变量 `$AUTO_PAGER_MIN_HEIGHT` 可以控制开始分页的最小行数：\n\n```sh\nAUTO_PAGER_MIN_HEIGHT=30        # 输出超过 30 行时才开始分页\neval \"$(ap --bash)\"\n```\n\n如果配置为负数，则代表终端窗口高度的百分比：\n\n```sh\nAUTO_PAGER_MIN_HEIGHT='-50'     # 输出超过终端窗口高度的 50% 时才开始分页\neval \"$(ap --bash)\"\n```\n\n如果不指定 `AUTO_PAGER_MIN_HEIGHT`，默认为 `-80`，即 `80%`。\n\n### fish\n\n在你的 `~/.config/fish/config.fish` 里加入下面内容：\n\n```sh\nap --fish | source\n```\n\nap 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nset AUTO_PAGER_CMDS go cargo make\nap --fish | source\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nset AUTO_PAGER_CMDS_EXTRA ps last\nap --fish | source\n```\n\n另外，ap 也可以和 [grc](https://github.com/garabik/grc) 一起工作，在 macOS  下可以使用 Homebrew 安装 grc:\n\n```sh\nbrew install grc\n```\n\nap + grc 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nset AUTO_PAGER_CMDS_WITH_GRC ps last dig diff\nap --fish | source\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nset AUTO_PAGER_CMDS_WITH_GRC_EXTRA ps last\nap --fish | source\n```\n\n\n\n另外，环境变量 `$AUTO_PAGER_MIN_HEIGHT` 可以控制开始分页的最小行数：\n\n```sh\nset AUTO_PAGER_MIN_HEIGHT 30        # 输出超过 30 行时才开始分页\nap --fish | source\n```\n\n如果配置为负数，则代表终端窗口高度的百分比：\n\n```sh\nset AUTO_PAGER_MIN_HEIGHT -50     # 输出超过终端窗口高度的 50% 时才开始分页\nap --fish | source\n```\n\n如果不指定 `AUTO_PAGER_MIN_HEIGHT`，默认为 `-80`，即 `80%`。\n\n### zsh\n\n在你的 `~/.zshrc` 里加入下面内容：\n\n```sh\neval \"$(ap --zsh)\"\n```\n\nap 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nAUTO_PAGER_CMDS=(go cargo make)\neval \"$(ap --zsh)\"\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nAUTO_PAGER_CMDS_EXTRA=(ps last)\neval \"$(ap --zsh)\"\n```\n\n另外，ap 也可以和 [grc](https://github.com/garabik/grc) 一起工作，在 macOS  下可以使用 Homebrew 安装 grc:\n\n```sh\nbrew install grc\n```\n\nap + grc 默认 wrap 了一批命令。如果你不满意，可以通过环境变量重新定制：\n\n```sh\nAUTO_PAGER_CMDS_WITH_GRC=(ps last dig diff)\neval \"$(ap --zsh)\"\n```\n\n或者也可只在默认清单之上增加新的命令：\n\n```sh\nAUTO_PAGER_CMDS_WITH_GRC_EXTRA=(ps last)\neval \"$(ap --zsh)\"\n```\n\n\n\n另外，环境变量 `$AUTO_PAGER_MIN_HEIGHT` 可以控制开始分页的最小行数：\n\n```sh\nAUTO_PAGER_MIN_HEIGHT=30        # 输出超过 30 行时才开始分页\neval \"$(ap --zsh)\"\n```\n\n如果配置为负数，则代表终端窗口高度的百分比：\n\n```sh\nAUTO_PAGER_MIN_HEIGHT='-50'     # 输出超过终端窗口高度的 50% 时才开始分页\neval \"$(ap --zsh)\"\n```\n\n如果不指定 `AUTO_PAGER_MIN_HEIGHT`，默认为 `-80`，即 `80%`。\n\n## 使用\n\n经过 ap wrap 过的命令只需要像往常一样使用就可以了。\n如果输出内容过多，会自动调用环境变量 `$PAGER` 所指定的分页器进行分页。\n\n如果你的 `$PAGER` 变量比较特殊，无法与 ap 适配，你也可以通过环境变量 `$AP_PAGER`\n为 ap 单独设置分页器。\n\n如果 `$AP_PAGER` 和 `$PAGER` 都没有指定，那么将使用 `less -Fr`。\n\n以下情况并不会启动分页器：\n* 输出内容过少时，参见 `$AUTO_PAGER_MIN_HEIGHT`。\n* 当 ap 检测到命令输出中包含 `ESC [?1049h` 序列时，此时命令被判定为全荧幕应用。\n* 当命令尚未执行完成时。分页器只有命令执行完成后才会启动。\n    - `ping` 和 `tcpdump` 等此类命令需要先按 `Ctrl-C` 终止命令后才会启动分页。\n    - `python` 和 `gdb` 等此类命令需要先等待命令退出后才会启动分页。\n\n## 常见问题\n\n* 会影响命令的彩色输出吗？\n    - 不会。\n* 有的命令会检测终端，并为终端模式和非终端模式提供不同的输出，会改变它的输出吗？\n    - 不会。\n* 如果我怀疑 ap 影响了命令的输出，如何诊断？\n    - 你可以用 `command foo` 来执行 `foo`，这样就不会调用 ap。\n* 如果我习惯性地在 ap 过的命令后面加了 `| less`，会出问题吗？\n    - 不会。\n* ap 过的命令还可以重定向它的输出吗？\n    - 可以。\n* ap 过的命令的自动补全会被破坏吗？\n    - 不会。\n* ap 支持像 `python`、`gdb` 这样的交互式应用吗？\n    - 支持。但是由于这些应用会输出一些控制字符，所以分页后看到的内容可能会有点乱。\n* ap 支持像 `htop`、`vim` 这样的全荧幕应用吗？\n    - 怎么说呢，反正不会出错，但我想不明白把 ap 和它们搭配在一起有什么实际意义。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflw-cn%2Fap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflw-cn%2Fap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflw-cn%2Fap/lists"}