繁体   English   中英

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

[英]Terminal retains bg color after closing vim - using color scheme and putty-256color term

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

唯一的解决方案是reset终端。

当使用xterm-256color term(也是w / Putty终端仿真器)时,问题不存在。

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

问题描述提到“终端保留了一些属性,如背景颜色”。 这可能是指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在将背景设置为灰色( \\E[38;5;130m )之后发送sgr0\\E[0m ])。 这样做应该重置颜色。 但事实并非如此。 在vim发送rmcup的两部分转义序列之前,还有其他几个操作

\E[2J
\E[?47l

这应该清除(备用)屏幕并切换回正常屏幕。 xterm的相应功能是

\E[?1049l

它结合了这两个操作。 看到这一点,PuTTY中存在两个问题,它们共同产生了问题:

  • 颜色未按预期重置 ,并且
  • 颜色应用于在普通屏幕上设置背景。

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

进一步阅读:

解决这个问题的方法是在GNU屏幕下启用altscreen 因此屏幕术语的行为与常规xterm相同 - 全屏应用程序与输出的其余部分具有单独的框架/屏幕。

然而,重要的是要设置正确的TERM以便应用知道如何在常规和替代屏幕之间切换。

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

有关如何解决此问题的一些灵感,请参阅此响应:

重点是包括

altscreen on

在.screenrc文件中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM