有句玩笑话: “RTFM(Read the F**ing Manual)”和”RTFSC(Read the F**ing Source Code)”是解决问题最有效的两种方法.

然而这么重要的man默认显示却只有一种颜色, 效果也只是简单的加粗, 下划线和闪烁, 实在是简陋, 效率也低. 所以我通过下面的配置给它加了几种颜色, 看起来舒服多了.

我加到.bashrc中的:

export LESS_TERMCAP_mb=$'\E[05;34m'       # begin blinking
export LESS_TERMCAP_md=$'\E[01;34m'       # begin bold
export LESS_TERMCAP_me=$'\E[0m'           # end mode
export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
export LESS_TERMCAP_so=$'\E[44;33m'       # begin standout-mode
export LESS_TERMCAP_ue=$'\E[0m'           # end underline
export LESS_TERMCAP_us=$'\E[04;33m'       # begin underline

效果大概是这样:

原理其实就是一些ANSI color escapes, 分别作用于原来的粗体, 下划线, 闪烁和提示消息, 格式如下:

{ESC}[{attr};{bg};{fg}m

attr:
Reset         00
Bold          01
Italic        03
Underline     04
Blink         05
Reverse       07
No Bold       22
No Italic     23
No Underline  24
No Blink      25
No Reverse    27

bg:
BLACK         40
RED           41
GREEN         42
YELLOW        43
BLUE          44
MAGENTA       45
CYAN          46
WHITE         47

fg:
BLACK         30
RED           31
GREEN         32
YELLOW        33
BLUE          34
MAGENTA       35
CYAN          36
WHITE         37

我用的是普通的8色, 感觉还好. 但如果你跟主席一样是个颜色控, 而且你用的终端也支持, 可以将bg和fg换成256色的. 格式相应的变为下面这样, fg和bg的取值范围为0-255:

{ESC}[{attr};48;05;{bg};38;05;{fg}m

========UPDATE========

刚Publish就发现了问题, Fedora 14中上面的设置不起作用!

查了下, 原来是因为某些发行版直接使用ANSI color escapes(也就是SGR escape sequence)去处理粗体, 斜体和下划线, 而我先前的做法只适用于老的控制序列. 废话不多说, 详细的解释去看grotty的手册, 解决方法如下:

export GROFF_NO_SGR=1

========UPDATE AGAIN========

写了个脚本(传送门), 可以打印出8色ANSI Color和256色XTERM Color, 方便颜色控们调试.