我使用时遇到问题这些方法在我的 gentoo 手册页中获取颜色。我已经在 gentoo 论坛中询问过,但它仍然不起作用,并且错误报告中的评论(错误 184604)也不起作用。有人可以帮助我在我的手册页中获取颜色吗?
编辑:是的,我使用 less 作为寻呼机,使用 urxvt-unicode 作为终端模拟器
编辑2:
我已经在gentoo论坛问过,但没有帮助,这是链接:http://forums.gentoo.org/viewtopic-t-819833-start-0.html。
答案1
可能会出现很多问题。
鉴于您正在使用zsh
,请尝试将其放入您的~/.zshrc
:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;47;34m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
export LESS=-r
然后打开一个新的终端窗口并尝试运行
man ls
如果它不起作用,请运行以下每个命令以找出问题所在:
1号
typeset -p LESS_TERMCAP_md | cat -v
应该打印
typeset -x LESS_TERMCAP_md="^[[01;31m"
和
typeset -p LESS
应该打印
typeset -x LESS="-r"
如果没有,则说明您将这些export LESS
内容放入了错误的文件中。
2号
echo "${LESS_TERMCAP_md}red${LESS_TERMCAP_me}"
应该打印
red
呈红色。如果没有,则说明您的终端设置有问题。检查您的终端设置(例如~/.Xresources
)或尝试运行gnome-terminal
或xterm
看看是否有效。
3号
echo -E "a^Ha" | LESS= less -r
(必须先按+然后按+^H
输入)CtrlVCtrlH
应该打印
a
红色的。如果没有,请运行这些
type less
less --version
并将输出粘贴回您的问题中。
4号
bzcat /usr/share/man/man1/ls.1.bz2 | \
/bin/sh /usr/bin/nroff -mandoc -Tutf8 | head -n 5 | cat -v
应该打印
LS(1) User Commands LS(1)
N^HNA^HAM^HME^HE
(注意^H
步骤 3 中的类似内容)
如果它打印类似的内容:
LS(1) User Commands LS(1)
^[[1mNAME^[[0m
相反,您需要找到一种方法来禁用“sgr 转义序列”。最简单的尝试是添加export GROFF_NO_SGR=1
到.zshrc
,但还有其他方法可以解决此问题。
5号
bzcat /usr/share/man/man1/ls.1.bz2 | \
/bin/sh /usr/bin/nroff -mandoc -Tutf8 | less
ls
应该用颜色显示手册页。
man ls
现在应该可以工作了!
答案2
读完 Mikels 的回答后,它非常全面,并且有望在所有系统上工作,但对我自己来说可能有点过分了(也在 gentoo 系统上。)
因此,对于那些对所有这些恶作剧非常“做很长,没有阅读”的人来说,这是一个结果。
要获得彩色手册页,我至少可以做如下:
LESS_TERMCAP_md=$'\E[01;31m' LESS_TERMCAP_me=$'\E[0m' GROFF_NO_SGR=1 man man
这将呈现以前仅以粗体显示的文本,以粗体显示和红色。 (以“31”为特征的红色LESS_TERMCAP_md
)
LESS_TERMCAP_se=$'\E[0m' LESS_TERMCAP_so=$'\E[01;32m'
这两条规则控制当前行号显示的格式,并强制其以绿色呈现。
LESS_TERMCAP_us=$'\E[04;33m' LESS_TERMCAP_ue=$'\E[0m'
这两条规则将之前带下划线的所有内容都移至带下划线的位置和黄色。 (04 是“下划线”,33 是“黄色”)
答案3
2023 年寻找此问题解决方案的人们可能会受到版本 1.23.0 中引入的 groff 软件包的更改的影响。
把export MANROFFOPT=-c
我.zshrc
的修好了。
(或者替代地GROFF_NO_SGR=1
)
背景: