【问题标题】:Unicode character bug upon exiting tmux with alternate screen overridden退出 tmux 并覆盖替代屏幕时出现 Unicode 字符错误
【发布时间】:2015-08-03 15:16:49
【问题描述】:

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

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

根据提供它的人的说法如下:

让多路复用器误以为终端没有“交替屏幕”模式(例如 pico、mutt 等使用的模式)。这是通过为会话设置 termcap 命令来完成的。

命令的 'xterm*' 部分应设置为终端仿真器声明的任何内容。

最终结果是溢出最终在终端的回滚缓冲区中而不是消失。 当然,由于这是一个静态缓冲区,当您在屏幕或 tmux 窗口之间切换时,事情会变得一团糟,但这对于快速向上滑动以查看 ls 命令的输出等非常方便。

我不太明白粗体部分(添加了重点),但我猜这就是我所看到的内容的来源。退出 tmux 时会导致某种奇怪的 unicode 溢出。

以纯文本形式粘贴此文本不会显示,但符号 [001B]112 会出现在通常的 [exited] 旁边:

]112[exited]

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

我关注了this advice(“使用终端滚动条与 tmux”),虽然它确实有效,但在退出时看到它只是丑陋/烦人。谁能建议如何修复或避免输出消息?

【问题讨论】:

    标签: tmux xterm


    【解决方案1】:

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

          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
    

    结果可能主要取决于您使用的特定终端仿真器。 screen 和 tmux 都过滤掉他们的开发人员不想实现的转义序列,并通过终端“应该”处理的转义序列。

    【讨论】:

      【解决方案2】:

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

      在我的例子中,$TERM 的值为 xterm-256color,而 ~/.tmux.conf 中的相应行如下所示:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 2013-09-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多