当将 man 管道输送到 less 时,如何保持着色?

当将 man 管道输送到 less 时,如何保持着色?

.zshrc我的文件中有这个

export MANLESS=""
export LESS="--RAW-CONTROL-CHARS"
export LESS_TERMCAP_mb=$(tput bold; tput setaf 5)
export LESS_TERMCAP_md=$(tput bold; tput setaf 1)
export LESS_TERMCAP_so=$(tput setaf 1; tput setab 3)
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput setaf 3)
export LESS_TERMCAP_ue=$(tput sgr0)

当我使用 man as: 时man zshexpn,我有漂亮的彩色部分:

在此输入图像描述

当我在手册页的同一部分使用 man as: 时man zshexpn | less '+/PROCESS SUBSTITUTION',它不再是彩色的:

在此输入图像描述

如何在第二种情况下获得彩色输出,与第一种情况相同?

答案1

我假设您使用的man是主流 Linux 发行版。man如果其输出不是终端,则那里(以及其他系统上)默认删除格式;因为您手动通过管道传输到less,所以这就是这里发生的情况。

您可以通过设置MAN_KEEP_FORMATTING为非空值来覆盖它:

MAN_KEEP_FORMATTING=1 man zshexpn | less '+/PROCESS SUBSTITUTION'

如果您希望此行为成为默认行为,请MAN_KEEP_FORMATTING与其他设置一起导出;请记住,这将影响所有man调用,当输出没有最终由终端处理(例如如果你想要grep输出)。

答案2

不要通过管道传递less额外的选项,而是在LESS变量中传递这些额外的选项。

LESS="$LESS +/PROCESS SUBSTITUTION" man zshexpn

相关内容