答案1
手册页 ( ) 的格式groff
不允许明确使用颜色,但使用一些文本装饰,例如粗体或下划线,而查看者可以重新解释这些文本装饰以显示颜色。这正是链接插件正在做的事情,所以我建议删除这个插件,而是直接.zshrc
通过变量设置颜色LESS_TERMCAP
(我假设您正在使用less
寻呼机man
,这个插件也是如此)。
这是带有描述的变量列表:
export LESS_TERMCAP_mb=$'\e[6m' # begin blinking
export LESS_TERMCAP_md=$'\e[34m' # begin bold
export LESS_TERMCAP_us=$'\e[4;32m' # begin underline
export LESS_TERMCAP_so=$'\e[1;33;41m' # begin standout-mode - info box
export LESS_TERMCAP_me=$'\e[m' # end mode
export LESS_TERMCAP_ue=$'\e[m' # end underline
export LESS_TERMCAP_se=$'\e[m' # end standout-mode
可以使用以下脚本找到颜色代码列表:
#!/bin/bash
echo "PALETTE OF 8 COLORS (bold, high intensity, normal, faint)"
for i in {30..37}; do printf "\e[1;${i}m1;%-2s \e[m" "$i"; done; echo
for i in {90..97}; do printf "\e[${i}m%+4s \e[m" "$i"; done; echo
for i in {30..37}; do printf "\e[${i}m%+4s \e[m" "$i"; done; echo
for i in {30..37}; do printf "\e[2;${i}m2;%-2s \e[m" "$i"; done;
echo -e "\n\n\nPALETTE OF 256 COLORS (only normal)"
j=8
for i in {0..255}; do
[[ $i = 16 ]] && j=6
[[ $i = 232 ]] && j=8
printf "\e[38;5;${i}m38;5;%-4s\e[m" "${i}"
(( i>15 && i<232 )) && printf "\e[52C\e[1;38;5;${i}m1;38;5;%-4s\e[52C\e[m\e[2;38;5;${i}m2;38;5;%-4s\e[m\e[126D" "${i}" "${i}"
[[ $(( $(( $i - 15 )) % $j )) = 0 ]] && echo
[[ $(( $(( $i - 15 )) % $(( $j * 6 )) )) = 0 ]] && echo
done
exit 0
答案2
给出的解决方案非常优雅。我希望 Oh My ZSH 官方维基
ohmyzsh/插件/彩色手册页/其中没有颜色列表或数组中的项目less_termcap
。以下是##Customization的内容,仅举一个小例子:
该插件声明了全局关联数组
less_termcap
,它将 termcap 功能映射到寻呼机的转义序列less
。加载插件后,用户可以进一步自定义此映射。查看来源以了解更多信息。例如:
less_termcap[md]
映射到LESS_TERMCAP_md
转义序列,告诉less
它如何以粗体打印某些内容。它当前以粗体红色显示,但如果您想更改它,可以less_termcap[md]
在获取 OMZ 后在 zshrc 文件中重新定义:less_termcap[md]="${fg_bold[blue]}" # this tells less to print bold text in bold blue
我想你可以对所有这些进行更多尝试术语帽
# mb start blink
# md start bold
# me turn off bold, blink and underline
# so start standout (reverse video)
# se stop standout
# us start underline
# ue stop underline
笔记
但如果你真的不想花时间尝试和犯错,那么一行就足够了