【问题标题】:Prevent `less -R` from resetting colours across newlines防止 `less -R` 跨换行重置颜色
【发布时间】:2015-12-31 18:02:12
【问题描述】:

我如何告诉less-R 或其他方式,不要在换行符之间重置颜色(\n)?这是我看到的一个例子:

$ echo -e '\033[31mThis is red.\nStill red.\n\033[0mBack now.' >> coltest
$ cat coltest
This is red. #Colour is red
Still red.   #Colour is red
Back now.    #Colour is the terminal's foreground colour.
$ less -RF coltest
This is red. #Colour is red
Still red.   #Colour is the terminal's foreground colour.
Back now.    #Colour is the terminal's foreground colour.

为什么Still red.的输出中less -RF的颜色会重置为终端的前景色?

【问题讨论】:

  • 想想如果你滚动到文件的末尾然后一次一行地向后工作会发生什么。请注意,less 这样做没有甚至查看前面的行。
  • @o11c 是的,我知道逐行应用属性更容易。但是,请注意,确实存在less 看到不止一行的情况 - 例如,行号。当然,这确实增加了某些less 操作所需的时间,但less 让您选择这是一种权衡。我也希望这里有类似的东西。
  • 这里与docker-compose up 相同,尽管docker logs 显示正确。

标签: bash colors ansi-colors


【解决方案1】:

对于某些用例,more 可能就足够了:

printf '\033[31mThis is red.\nStill red.\n\033[0mBack now.\n' >> coltest


more coltest

【讨论】:

  • less -r 有它自己的一系列问题,正如man 页面告诉你的那样:“警告:使用 -r 选项时,less 无法跟踪屏幕的实际外观(因为这取决于屏幕如何响应每种类型的控制字符)。因此,可能会导致各种显示问题,例如长行被分割到错误的位置。在我的例子中,less -r 弄乱了颜色,两个连续的颜色转义码相隔一屏。
猜你喜欢
  • 2016-12-06
  • 2011-11-10
  • 2022-01-02
  • 2014-10-11
  • 2012-02-16
  • 2021-04-22
  • 2011-12-23
  • 2014-12-05
  • 2012-12-13
相关资源
最近更新 更多