小编use*_*441的帖子

为什么不需要转义序列以将样式应用于 tmux 内终端中的文本?

如果我希望ANSI颜色0为红色,在urxvt终端中,我需要将序列传递\e]4;0;red\a给后者:

printf '\e]4;0;red\a'
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一般语法:

OSC 4 ; c ; spec BEL
Run Code Online (Sandbox Code Playgroud)

inside tmux,它不起作用,可能是因为它tmux在终端之前被消耗了。因此,我需要通过此处找到的另一个序列来保护它:

printf '\ePtmux;\e\e]4;0;red\a\e\\'
Run Code Online (Sandbox Code Playgroud)

现在,如果我想对文本应用一种样式,例如给它加下划线,我是在里面还是在外面tmux都没有关系。同样的顺序似乎总是有效:

printf '\e[4m underline \e[0m'
Run Code Online (Sandbox Code Playgroud)

我想也许可以解释这种差异,因为我已经在~/.tmux.conf. 特别是,我设置了terminal-overrides添加和设置非官方 terminfo 扩展SsSe更改内部光标形状的选项,tmuxman tmux(部分TERMINFO EXTENSIONS)中所述:

set-option -as terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试对里面的文本应用样式时tmux,我在没有任何配置的情况下启动了后者:

tmux -Ltest -f/dev/null
Run Code Online (Sandbox Code Playgroud)

在里面tmux,为什么不需要\e[4m underline \e[0m像 for 那样保护序列\e]4;0;red\a

terminal tmux escape-characters

2
推荐指数
1
解决办法
372
查看次数

标签 统计

escape-characters ×1

terminal ×1

tmux ×1