关闭vim后,端子保留bg颜色-使用颜色方案和putty-256颜色术语

关闭vim后,端子保留bg颜色-使用颜色方案和putty-256颜色术语,vim,putty,xterm,256color,Vim,Putty,Xterm,256color,关闭使用颜色格式(如vim)的应用程序后,终端会保留一些属性,如背景色。 仅当使用putty-256color或屏幕术语时才会发生这种情况。 我在RHEL6.5和Ubuntu14.04LTS中观察到类似的行为 唯一的解决方案是重置终端 使用xterm-256colorterm(也带有Putty终端仿真器)时,问题不存在 有没有一个解决方案/解释为什么会发生这种情况,以及在Putty terminal emulator下使用xterm时可能会失去什么,也就是说,最好实际使用Putty-256col

关闭使用颜色格式(如vim)的应用程序后,终端会保留一些属性,如背景色。 仅当使用
putty-256color
屏幕
术语时才会发生这种情况。 我在RHEL6.5和Ubuntu14.04LTS中观察到类似的行为

唯一的解决方案是
重置
终端

使用
xterm-256color
term(也带有Putty终端仿真器)时,问题不存在


有没有一个解决方案/解释为什么会发生这种情况,以及在Putty terminal emulator下使用xterm时可能会失去什么,也就是说,最好实际使用
Putty-256color
xterm-256color
术语?

解决方案是在GNU屏幕下启用
altscreen
。因此,屏幕术语的行为与常规xterm类似-全屏应用程序具有独立于其余输出的帧/屏幕

但是,重要的是要设置正确的
术语
,以便应用程序知道如何在常规屏幕和alt屏幕之间切换


来源:

有关如何解决此问题的一些启示,请参阅此回复:

要点是包括

altscreen on
在.screenrc文件中


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

然而,乍一看,备用屏幕功能似乎并不相关。使用PuTTY和vim时,无论是否禁用PuTTY的备用屏幕功能,使用“晨”配色方案都会产生问题。退出时,屏幕具有与vim中相同的灰色背景。如果我跟着它走

tput sgr0
然后,该命令重置颜色,以便使用终端的默认背景色(如预期)写入新文本

查看vim在退出时发送的转义序列,没有发现任何异常-在终端描述中(用于使其具有可读性):

也就是说,vim在将背景设置为灰色(
\E[38;5;130m
)后立即发送
sgr0
\E[0m
)。这样做应该会重置颜色。但它不会。在vim发送
rmcup
中的两部分转义序列之前,还有一些其他操作

\E[2J
\E[?47l
这将清除(备用)屏幕并切换回正常屏幕。
xterm
中相应的功能为

\E[?1049l
结合了这两种操作。鉴于此,腻子中存在两个问题,这两个问题共同产生了问题:

  • 颜色未按预期重置,并且
  • 该颜色用于设置正常屏幕上的背景
它恰好与
TERM=xterm
一起工作,使用
1049
代码,因为PuTTY的开发人员显然已经测试过了。例如,如果这样可以恢复正常屏幕的颜色(但不使用
47
代码),那么您就会看到这个问题

进一步阅读:

  • (xterm常见问题解答)

您看到的问题是术语变量设置不正确。vim使用此变量来确定它将如何绘制到屏幕上。如果设置不正确,vim无法撤消它用于绘制的设置,因为底层终端不理解它使用的代码。不确定设置不正确是什么意思。我检查一下我认为这是由于在常规非屏幕终端中发生的一些重画,在应用程序关闭后,整个“框架”被刷新,没有上一个(CLI)的痕迹在执行启动此应用程序的命令的行之后,您将返回到提示符。在屏幕中没有刷新-当您关闭某个应用程序时,您会在前一行的缓冲区中仍然可见的应用程序之后立即返回到提示符。是否有方法在屏幕术语中导致帧/屏幕刷新?看起来像是这样吗这仍然不能解决RHEL6.5的问题。即使vim正确地在常规屏幕和altscreen之间切换(猜测这意味着术语是正确的)关闭vim后,来自vim的格式仍然保留。使用相同的配置,这在Ubuntu14.04LTS上可以完美工作。还有一个观察结果-当使用
:q
退出vim时会发生这种情况。使用
:wq
关闭vim时不会发生这种情况。
\E[?1049l