退出tmux时的Unicode字符错误,覆盖备用屏幕

时间:2015-08-03 15:16:49

标签: tmux xterm

我已删除并添加了几次以下行到~/.tmux.conf

set -ga terminal-overrides ',xterm*:smcup@:rmcup@'

根据提供者提供的内容如下:

  

欺骗多路复用器认为终端没有“备用屏幕”模式(例如pico,mutt等使用的模式)。这是通过为会话设置termcap命令来完成的。

     

命令的'xterm *'部分应设置为终结模拟器声明的任何内容。

     

最终结果是溢出终止于终端的回滚缓冲区而不是消失。 当然,由于这是一个静态缓冲区,当你在屏幕或tmux窗口之间切换时,事情会变得混乱,但是这很方便快速查看ls命令的输出等等。

我不太了解粗体部分(强调添加),但猜测这是我所看到的来源。退出tmux时会导致一些奇怪的unicode溢出。

enter image description here

作为纯文本粘贴此文字不会显示,但符号[001B]112会显示在通常的[exited]旁边:

]112[exited]

(FWIW我认为它已贴在该行,但未显示)

我跟着this advice(“使用带有tmux 的终端滚动条”),虽然它确实有效,但在退出时看到这个只是丑陋/烦人。任何人都可以建议如何修复或避免输出消息?

2 个答案:

答案 0 :(得分:2)

另外,我会得到不需要的“消息”是一些硬编码的应用程序(或脚本),它有助于重置xterm 动态文本光标颜色。请参阅XTerm Control Sequences的说明中的Operating System Controls

      The dynamic colors can also be reset to their default
      (resource) values:
...
        Ps = 1 1 2  -> Reset text cursor color.

所以......某处有一些脚本相当于

echo -n -e '\e]112\a

结果可能最大程度上取决于您使用的特定终端仿真器。屏幕和tmux都会过滤掉开发人员不关心实现的转义序列,并通过终端“应该”处理的转义序列。

答案 1 :(得分:2)

看看你提供的句子:“命令的'xterm *'部分应该设置为你的终端模拟器被声明为的任何内容。

就我而言,$ TERM的值为xterm-256color,而〜/ .tmux.conf中的对应行如下所示:

set -g terminal-overrides "xterm-color256:smcup@:rmcup@"