我知道你可以使用转义序列%{\033[0m%}(代码零)将提示符的颜色改回“默认”颜色(通常在提示符之后)。但是,用于此的“默认值”是什么?1.终端程序本身的默认颜色?1.通过tput setaf $COLOR设置的默认颜色,假设您使用它来设置不同于终端默认颜色的字体颜色?1.其他?
%{\033[0m%}
tput setaf $COLOR
aurhwmvo1#
它依赖于终端,但就现有实践而言,它必须是前者:1.终端(程序)的默认颜色。另一个建议的选择是不正确的,因为tput setaf没有设置“默认颜色”,而是设置“当前颜色”。tput setaf的任何选择是否对应于终端的默认颜色(最好)是特定于终端的,因为没有相关的标准。ECMA 48给出了 * SGR 0 *(这是问题中提到的)和 * SGR 30-37,40-47 *(通常用于tput使用的终端描述的setaf/setab选项)的简洁(一行)描述。还有另一个可能的选择,即tput op(选择原始的 color pair),在几个终端描述中使用它来发送 * SGR 39 * 和 * 49 *。同样,这是特定于终端的,它与 * SGR 0 * 的关系没有被任何标准所涵盖。这些恰好在xterm和Linux控制台中使用相同的“默认颜色”,但是(阅读ECMA-48)该标准没有给予关于“默认颜色”和“视频属性”的缺失的细节水平。进一步阅读:
tput setaf
SGR 0
SGR 30-37
40-47
tput op
SGR 39
49
1条答案
按热度按时间aurhwmvo1#
它依赖于终端,但就现有实践而言,它必须是前者:
1.终端(程序)的默认颜色。
另一个建议的选择是不正确的,因为
tput setaf
没有设置“默认颜色”,而是设置“当前颜色”。tput setaf
的任何选择是否对应于终端的默认颜色(最好)是特定于终端的,因为没有相关的标准。ECMA 48给出了 *
SGR 0
*(这是问题中提到的)和 *SGR 30-37
,40-47
*(通常用于tput使用的终端描述的setaf/setab选项)的简洁(一行)描述。还有另一个可能的选择,即
tput op
(选择原始的 color pair),在几个终端描述中使用它来发送 *SGR 39
* 和 *49
*。同样,这是特定于终端的,它与 *SGR 0
* 的关系没有被任何标准所涵盖。这些恰好在xterm和Linux控制台中使用相同的“默认颜色”,但是(阅读ECMA-48)该标准没有给予关于“默认颜色”和“视频属性”的缺失的细节水平。进一步阅读: