我不是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 branch
、journalctl
等。
如果您希望此设置仅应用于联机帮助页,MANPAGER
则应该使用。
定义vim
为MANPAGER
:
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
,它只是某些实际寻呼机的符号链接,甚至可能不存在)。