终端在关闭后使用配色方案和腻子-256色项保留bg色



关闭使用颜色格式化(例如vim)的应用程序后,终端保留一些属性,如背景颜色。这只发生在使用putty-256colorscreen项时。我在RHEL 6.5和Ubuntu 14.04LTS中观察到类似的行为。

唯一的解决办法是reset端子。

当使用xterm-256color项(也w/Putty终端模拟器)时,问题不存在。

是否有解决方案/解释为什么会发生这种情况,以及在Putty终端模拟器下使用xterm时我可能会失去什么,即实际使用putty-256colorxterm-256color术语是否更好?

问题描述提到"终端保留了一些属性,比如背景颜色"。这可能指的是PuTTY支持的背面颜色擦除功能。当屏幕被擦除时,终端将用当前背景色填充背景(在被擦除的部分上)。

乍一看,交替屏幕功能似乎没有关系,然而。在使用PuTTY和vim使用"早晨"配色方案时,无论是否禁用了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[?25hr
E[?25l  
E[24;1H
E[K
E[24;1H
E[?1l   
E>
E[?25h
E[2J   
E[?47l

也就是说,vim在将背景设置为灰色(E[38;5;130m)之后发送sgr0 (E[0m)。这样做应该重置颜色。但事实并非如此。在vim发送rmcup

中的两部分转义序列之前,还有其他几个操作
E[2J
E[?47l

应该清除(备用)屏幕并切换回正常屏幕。xterm中对应的能力为

E[?1049l

组合了这两个操作。由此可见,在PuTTY中有两个问题,它们共同产生了这个问题:

  • 颜色未按预期重置
  • 颜色用于设置正常屏幕上的背景。

它恰好与TERM=xterm一起工作,使用 1049 代码,因为PuTTY的开发人员显然测试了。例如,如果恢复正常屏幕的颜色(但不使用 47 代码),那么您将看到这个问题。

进一步阅读:

  • 为什么运行vi时屏幕不清?(xterm FAQ)
  • 我的终端显示一些未着色的空间
  • XTerm控制序列

解决这个问题的方法是在GNU屏幕下启用altscreen。因此,屏幕项的行为就像普通的xterm一样——全屏应用程序与其他输出有一个单独的帧/屏幕。

有一个正确的TERM设置是很重要的,这样应用程序就知道如何在常规屏幕和alt屏幕之间切换。

来源:当在gnu屏幕中使用vim或less时,退出vim或less会留下挥之不去的印记

关于如何解决这个问题,请参阅以下回复:

要点是包含

altscreen on

在你的。screenrc文件。

https://stackoverflow.com/a/37863269/5153834

相关内容

  • 没有找到相关文章

最新更新