关闭使用颜色格式的应用程序(例如vim)后,终端会保留一些属性,例如背景颜色。
只有在使用putty-256color
或screen
字词时才会发生这种情况。
我在RHEL 6.5和Ubuntu 14.04LTS中观察到类似的行为。
唯一的解决方案是reset
终端。
使用xterm-256color
术语(也是带有Putty终端仿真程序)时,问题不存在。
是否有解决方案/解释为什么会发生这种情况?在Putty终端模拟器下使用xterm时我可能会失去什么,即实际使用putty-256color
或xterm-256color
这个术语会更好吗?
答案 0 :(得分:1)
问题描述提到“终端保留了一些属性,如背景颜色”。这可能是指PuTTY支持的背面颜色擦除功能。擦除屏幕时,终端将使用当前背景颜色填充背景(在已擦除部分上)。
然而,乍一看,备用屏幕功能似乎并不相关。我可以使用PuTTY和vim使用“早晨”colorscheme产生问题,无论是否禁用PuTTY的替代屏幕功能。退出时,屏幕具有与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
代码),那么您会看到这个问题。
进一步阅读:
答案 1 :(得分:0)
对此的解决方案是在GNU屏幕下启用altscreen
。因此屏幕术语的行为与常规xterm相同 - 全屏应用程序与输出的其余部分具有单独的框架/屏幕。
但重要的是要设置正确的TERM
,以便应用知道如何在常规和替代屏幕之间切换。
来源:When using vim or less in gnu screen, quitting vim or less leaves a lingering imprint
答案 2 :(得分:0)
请参阅此回复,了解如何解决此问题:
要点是包括
document.querySelectorAll
<。>在.screenrc文件中。