“%{\033[0m%}”(代码零)是否将字体颜色重置为 "tput setaf" 或 Xterm 默认颜色?

Does "%{\033[0m%}" (code zero) reset the font color to "tput setaf" or to Xterm default color?

我知道您可以使用转义序列 %{3[0m%}(代码零)将提示颜色改回 "default" 颜色(通常在提示之后)。

但是用于此的 "default" 是什么?

  1. 终端程序本身的默认颜色?
  2. 默认颜色通过 tput setaf $COLOR 设置,假设您使用它来设置不同于终端默认颜色的字体颜色?
  3. 还有吗?

是terminal-dependent,但按照现有的做法,应该是前者:

  1. 终端(程序)的默认颜色。

另一个建议的选择是不正确的,因为 tput setaf 没有设置 "default color",而是 "current color"。 tput setaf 的任何选择是否对应于终端的默认颜色(最多)是 terminal-specific,因为没有任何相关标准。

ECMA 48 给出了 SGR 0(问题中提到的内容)和 [=13= 的简洁(一行)描述]40-47(tput 将使用的终端描述常用的 setaf/setab 选择)。

还有另一种可能的选择,即tput op(选择原来的颜色对),它在几个终端描述中用于发送SGR 3949。同样,这是 terminal-specific 并且它与 SGR 0 的关系未被任何标准涵盖。那些碰巧对 xterm 和 Linux 控制台使用相同的 "default color",但是(阅读 ECMA-48)该标准没有给出关于 "default color" 和缺少 "video attributes".

延伸阅读: