关闭使用颜色格式(例如 vim)的应用程序后,终端会保留一些属性,如背景颜色。
这仅在使用 putty-256color
时发生或 screen
学期。
我在 RHEL 6.5 和 Ubuntu 14.04LTS 中观察到类似的行为。
唯一的解决办法是reset
终点站。
使用时xterm-256color
术语(也带有 Putty 终端仿真器)问题不存在。
是否有解决方案/解释为什么会发生这种情况以及在 Putty 终端仿真器下使用 xterm 时我会丢失什么,即实际使用 putty-256color
会更好吗?或 xterm-256color
学期?
最佳答案
问题描述提到“终端保留了一些属性,如背景颜色”。这可能是指 PuTTY 支持的背景颜色删除功能。当屏幕被删除时,终端会用当前的背景颜色填充背景(在被删除的部分)。
然而,乍一看,备用屏幕功能似乎并不相关。无论是否禁用 PuTTY 的备用屏幕功能,我都可以使用 PuTTY 和 vim 使用“早上”颜色方案产生问题。退出时,屏幕具有与 vim 中相同的灰色背景。如果我按照
tput sgr0
然后该命令会重置颜色,以便使用终端的默认背景颜色(如预期)写入新文本。
查看 vim 在退出时发送的转义序列没有发现任何异常——在终端描述中(使用
unmap
使它们以可读的形式出现):\n
\E[1m
\E[38;5;130mendif
\E[0m
\E[30m
\E[47m
\E[24;63H1,1
\E[11CTop
\E[1;1H
\E[?25h
\E[?25l
\E[24;63H
\E[K
\E[24;1H:
\E[?25hq
\E[?25l
\E[?25h\r
\E[?25l
\E[24;1H
\E[K
\E[24;1H
\E[?1l
\E>
\E[?25h
\E[2J
\E[?47l
即vim发送
sgr0
( \E[0m
) 就在将背景设置为灰色 ( \E[38;5;130m
) 之后。这样做应该重置颜色。但事实并非如此。在 vim 发送 rmcup
中的两部分转义序列之前,还有其他几个操作。\E[2J
\E[?47l
这应该清除(替代)屏幕并切换回正常屏幕。
xterm
中对应的能力是\E[?1049l
它结合了两个操作。看到这一点,PuTTY 中有两个问题共同产生了问题:
它恰好适用于
TERM=xterm
,使用 1049
代码,因为 PuTTY 的开发人员显然对此进行了测试。例如,如果这恢复了正常屏幕的颜色(但不使用 47
代码),那么您会看到这个问题。进一步阅读:
关于vim - 终端在关闭 vim 后保留 bg 颜色 - 使用配色方案和 putty-256color 术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613237/