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

时间:2014-07-07 14:38:48

标签: vim putty xterm 256color

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

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

使用xterm-256color术语(也是带有Putty终端仿真程序)时,问题不存在。

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

3 个答案:

答案 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文件中。

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