如果可能的话,如何更改 man 的 PAGER 变量?

如果可能的话,如何更改 man 的 PAGER 变量?

我不是Linux专家,但是我在读一本入门书,发现man页面使用PAGER环境变量来显示页面的内容man。我检查了一下printenv,没有发现任何PAGER变量。

然而,由于它是一个二进制文件,并且 的路径在我的路径中,因此在 Linux 中也/usr/bin有一个名为 的程序,我认为它是.pager$PAGER

出于好奇,我想知道如何修改这个PAGER变量。我尝试在 bash 文件中添加一个,但这不起作用,找不到如何更改分页器。

寻呼机有什么特别之处 - 我希望任何可以读取stdin或支持管道内容的程序都可以是寻呼机,可以vim是寻呼机吗?

在内部看来,它man只是用于sed将数据发送到已定义的PAGER变量,因为执行以下操作有效,但失败了。

env PAGER=/usr/bin/nano man printf

我收到一个错误,如下所示

在此输入图像描述

答案1

PAGER变量不仅用于man,还用于任何其他需要分页的输出,例如git branchjournalctl等。

如果您希望此设置仅应用于联机帮助页,MANPAGER则应该使用。

定义vimMANPAGER

export MANPAGER="vim +MANPAGER -"
  • +MANPAGER投入vim联机帮助页模式(颜色、隐藏不可见字符等)。这也将使其只读
  • 末尾的-表示从标准输入读取文本(标准输入

对于其他寻呼机:

  • Nano(正如@muru 所解释的那样,不会很漂亮):

    export MANPAGER="nano -"
    

对于以下内容,您不需要添加连字符,因为这些程序最初设计用于读取标准输入

  • 最多:

    export MANPAGER="most"
    
  • 较少的:

    export MANPAGER="less"
    
  • 更多的:

    export MANPAGER="more"
    
  • 蝙蝠(漂亮的颜色和格式):

    export MANPAGER="sh -c 'col -bx | bat -l man -p'"
    

答案2

如果你想用作nano寻呼机,你需要告诉它从标准输入读取:

MANPAGER='nano -' man printf

但结果不会很漂亮,因为man输出的格式化字符nano只会按原样显示,而不是格式化文本。

是的,这也适用于 Vim,并且 Vim 已经一些对此表示支持。看:h manpager.vim更多细节。

在内部看来该人只是用来sed发送数据

不,man没有sed任何用处。它确实用于troff格式化文本。


然而,由于它是一个二进制文件,并且路径/usr/bin在我的路径中,因此在 linux 中也有一个名为的程序pager,我认为它是默认选项$PAGER

如果您使用的是 Debian 或某些 Debian 衍生版本,情况就是如此。从man man:

-P pager, --pager=pager
      Specify which output pager to use.  By default, man uses pager, falling back to cat
      if pager is not found or is not executable.  This option  overrides  the  $MANPAGER
      environment  variable, which in turn overrides the $PAGER environment variable.  It
      is not used in conjunction with -f or -k.

在其他发行版上不一定是这种情况(pager,它只是某些实际寻呼机的符号链接,甚至可能不存在)。

相关内容