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

Mar*_*ter 16 less colors man zsh

我的.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)
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

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

Ste*_*itt 17

我\xe2\x80\x99m 假设你\xe2\x80\x99正在man主流Linux发行版上使用。man如果其输出不是 \xe2\x80\x99t 终端,则(以及在其他系统上)默认删除格式;由于您\xe2\x80\x99手动通过管道传输到less,因此\xe2\x80\x99s就是这里发生的\xe2\x80\x99s。

\n

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

\n
MAN_KEEP_FORMATTING=1 man zshexpn | less '+/PROCESS SUBSTITUTION'\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n


Gil*_*il' 10

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

LESS="$LESS +/PROCESS SUBSTITUTION" man zshexpn
Run Code Online (Sandbox Code Playgroud)