Zsh

當管道人減少時,我怎樣才能保持著色?

  • August 14, 2022

我的.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'時,在手冊頁的同一部分,它不再是彩色的:

在此處輸入圖像描述

如何在第二種情況下獲得彩色輸出,與第一種情況相同?

我假設您使用man的是主流 Linux 發行版。man如果輸出不是終端,則那裡(和其他系統上)預設刪除格式;因為你手動管道到less,這就是這裡發生的事情。

您可以通過設置MAN_KEEP_FORMATTING為非空值來覆蓋它:

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

如果您希望此行為成為預設行為,MAN_KEEP_FORMATTING請與您的其他設置一起導出。

而不是通過額外的選項進行管道傳遞,而是在變數less中傳遞這些額外的選項。LESS

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

引用自:https://unix.stackexchange.com/questions/713570