个性化彩色手册页 zsh 插件颜色

个性化彩色手册页 zsh 插件颜色

我刚刚安装了彩色手册页zsh 插件。

它工作得很好,但我在底部消息上有一个丑陋的颜色输出:

在此输入图像描述

在不覆盖所有内容的情况下个性化插件颜色的正确方法是什么?看来颜色是在过程中直接设置的插件激活

或者也许这是我的系统的一个错误,可以用另一种方式修复?事实上,这种默认的不可读的颜色输出看起来很奇怪。

我在 Ubuntu 18.10 和 gnome-terminal 下运行。

答案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


笔记

但如果你真的不想花时间尝试和犯错,那么一行就足够了

相关内容