首页 > 解决方案 > 更改 cygwin mintty/Mac iTerm/Unix xterm 的前景色和背景色的 ANSI 序列

问题描述

我通常在很多不同的计算机上打开很多窗口。我想让.bash_profile每台机器上的前景色和背景色设置为特定于该机器的颜色。

我在 Cygwin 上使用 mintty,在 Mac 上使用 iTerm,有时使用 xterm 或 aterm 或 gnome-terminal。

如果我在程序的特定 GUI 中更改前景色和背景色,它们会粘住,进入 EMACS 或ls使用该--color选项不会改变它。

但是,如果我使用 ANSI 序列将前景色和背景色设置为 24 位颜色,只要 EMACS 或 ls 尝试将某些东西设置为不同的颜色,我的终端的颜色就会恢复为默认的前景色和背景色.

有什么方法可以使用 ESCAPE SEQUENCE 而不是 GUI 来更改默认的前景色和背景色?

标签: iterm2xtermitermansi-escapemintty

解决方案


有,但它仅在xterm中可靠地实现(并记录在案) 。这就是xtermcontrol程序使用的“动态颜色”功能:

可以使用1 0 through设置或查询的 10 种颜色(如下)1 9 表示为动态颜色,因为相应的控制序列是动态设置 xterm 的颜色的第一种方法,即在它启动之后。它们与 ANSI 颜色不同。可以使用该allowColorOps资源禁用这些控件。Pt至少需要一个参数。每个连续的参数都会更改列表中的下一个颜色。Ps的值告诉列表中的起点。颜色由名称或 RGB 规范指定XParseColor

如果"?"给出 a 而不是名称或 RGB 规范,xterm 会回复一个相同形式的控制序列,该控制序列可用于设置相应的动态颜色。因为在一个控制序列中可以给出不止一对颜色编号和规格,xterm 可以做出不止一个回复。

对于其他终端,他们识别部分功能,但不完整,并且不提供文档(除了他们的源代码)-ymmv


推荐阅读