less
我多次被以下行为所困惑:
# setup some test data
echo -e "foo\nfoo\nfoo" > /tmp/foo
echo -e "bar\nbar\nbar" > /tmp/bar
# now pipe something colored through `less`
diff --color=always /tmp/foo /tmp/bar | less -R
我得到的输出如下所示:
即,虽然显示了某些颜色,但并不完全正确。相反,less -r
输出结果正确:
手册页解释了-r
vs-R
的含义,即-r
显示所有控制字符,而-R
仅显示 ANSI 颜色转义码。在-r
模式下,less
无法正确跟踪屏幕上的实际外观。因此,-R
通常建议通过导出将模式作为默认设置LESS=R
。
知道为什么 ANSI 颜色在-R
模式下仅部分起作用吗?
答案1
这在
更少的手册页
描述-R or --RAW-CONTROL-CHARS
:
仅当颜色在一行内改变时才支持颜色转义序列,而不支持跨行改变颜色。换句话说,每行的开头都假定为正常(无色),而不管前几行中的任何转义序列。
您有多行颜色序列,因此只有第一行是彩色的。
参数的描述-r
不包括此警告,因此此选项对颜色序列和线条不做任何假设。