如果我希望 ANSI 颜色0
为红色,在urxvt
终端中,我需要将序列传递\e]4;0;red\a
给后者:
printf '\e]4;0;red\a'
我找到了一般语法这里:
OSC 4 ; c ; spec BEL
在内部tmux
,它不起作用,可能是因为它在tmux
终端之前被消耗了。所以,我需要通过找到的另一个序列来保护它这里:
printf '\ePtmux;\e\e]4;0;red\a\e\\'
现在,如果我想对文本应用某种样式,例如在其下划线,无论我在内部还是外部tmux
并不重要。相同的顺序似乎总是有效:
printf '\e[4m underline \e[0m'
我想也许可以解释这种差异,因为我在~/.tmux.conf
.特别是,我设置了terminal-overrides
添加和设置非官方 terminfo 扩展Ss
以及Se
更改内部光标形状的选项,如(部分)tmux
中所述:man tmux
TERMINFO EXTENSIONS
set-option -as terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
但是当我尝试将样式应用于内部文本时tmux
,我在没有任何配置的情况下启动了后者:
tmux -Ltest -f/dev/null
在内部tmux
,为什么不需要\e[4m underline \e[0m
像您需要的那样保护序列\e]4;0;red\a
?
答案1
tmux
不是 XTerm(即使您在 XTerm 中使用它)。它充当自己的终端模拟器(当然还有多路复用器),位于您正在使用的任何终端之上。您链接的页面是 XTerm 控制序列,它(虽然非常有用)并不适用于现有的每个终端。对于screen
,在线手册页screen(1)
列出了它接受的控制序列。 tmux(1)
不包含类似的部分,但有一个 1984 年终端各种控制序列的旧描述,至少反映了其作者几年前的目标,尽管没有严格记录其当前行为,在tools/ansicode.txt
.
无论如何,用于设置文本属性的 SGR 序列比“操作系统命令”(例如用于更改调色板的命令)更受普遍支持。来自同一链接页面:
CSI下午m 角色属性 (SGR)
- Ps = 0 -> 正常(默认)。
- Ps = 1 -> 粗体。
- Ps = 2 -> 微弱、强度降低 (ISO 6429)。
- Ps = 3 -> 斜体 (ISO 6429)。
- Ps = 4 -> 下划线
- Ps = 5 -> 闪烁(在 X11R6 xterm 中显示为粗体)。
- Ps = 7 -> 逆。
- Ps = 8 -> Invisible,即隐藏(VT300)。
- Ps = 9 -> 划掉的字符 (ISO 6429)。
- Ps = 2 1 -> 双下划线 (ISO 6429)。
- Ps = 2 2 -> 正常(既不粗体也不微弱)。
- Ps = 2 3 -> 非斜体 (ISO 6429)。
- Ps = 2 4 -> 不带下划线。
- Ps = 2 5 -> 稳定(不闪烁)。
- Ps = 2 7 -> 正数(非反数)。
- Ps = 2 8 -> 可见,即不隐藏(VT300)。
- Ps = 2 9 -> 未划掉 (ISO 6429)。
- Ps = 3 0 -> 将前景色设置为黑色。
- Ps = 3 1 -> 将前景色设置为红色。
- Ps = 3 2 -> 将前景色设置为绿色。
- Ps = 3 3 -> 将前景色设置为黄色。
- Ps = 3 4 -> 将前景色设置为蓝色。
- Ps = 3 5 -> 将前景色设置为洋红色。
- Ps = 3 6 -> 将前景色设置为青色。
- Ps = 3 7 -> 将前景色设置为白色。
- Ps = 3 9 -> 将前景色设置为默认(原始)。
- Ps = 4 0 -> 将背景颜色设置为黑色。
- Ps = 4 1 -> 将背景颜色设置为红色。
- Ps = 4 2 -> 将背景颜色设置为绿色。
- Ps = 4 3 -> 将背景颜色设置为黄色。
- Ps = 4 4 -> 将背景颜色设置为蓝色。
- Ps = 4 5 -> 将背景颜色设置为洋红色。
- Ps = 4 6 -> 将背景颜色设置为青色。
- Ps = 4 7 -> 将背景颜色设置为白色。
- Ps = 4 9 -> 将背景颜色设置为默认(原始)。
(我有种预感下午本来是PS以匹配项目。)
直接支持这些是有意义的tmux
,因为它们经常被应用程序使用,并且用户可能会因缺乏支持而感到沮丧。
还值得注意的是,Linux 控制台使用不同的转义序列将调色板索引 0 设置为 red: \033]P0ff0000\033\\
。一般来说,其中是调色板索引(以十六进制表示),OSC P n rr gg bb ST
是颜色(也是以十六进制表示)。n
rr gg bb