tmux,Solarized和terminfo

时间:2014-07-14 22:30:35

标签: vim tmux color-scheme terminfo

这是一个非常具体的问题,但根据我在网上看到的,这是一个非常常见的问题。我是基于Red Hat的相当旧版本的Scientific Linux 5。我将vim与Solarized vim颜色方案一起使用,我的TERM环境变量通常设置为xterm-256color。这工作正常,直到我开始使用tmux。在vim中的非空行中,颜色方案仅扩展到文档字符的末尾,剩余的空白是纯背景。

在线指南中的库存修正方法是设置TERM='screen-256color'。然而,一旦这样做,我会得到不祥的警告:WARNING: terminal is not fully functional - (press RETURN),当试图做无害的事情,如阅读手册页。但是,一切似乎都运行正常,Solarized错误已得到修复。

我找到了一个功能性修补程序 - 默认情况下使用TERM='xterm-256color'并将此行添加到我的.bashrc中:

alias v='function _vim(){ TERM='screen-256color'; vim $1; TERM='xterm-256color'; };_vim'

但它似乎是一个黑客。有趣的是,我还设置了alias tmux='tmux -2',这是与色彩方案相关问题的常见建议。

我也知道终端screen-256color在我的机器上可用。

所以,真的,最令人困惑的是,当使用TERM='screen-256color'时,我会在没有任何错误的情况下收到有关完整功能的警告。

我没有root权限,所以理想情况下,任何修复建议都不需要。

编辑:我应该提到TERM='screen-256color-bce'提出与TERM='screen-256color'相同的问题。

1 个答案:

答案 0 :(得分:1)

未指定用户的环境,但可能使用bash及更少(Scientific Linux 5没有more)。

Scientific Linux 5's ftp site上的包列表显示了ncurses-5.5-24.20060715.src.rpm,其中不包含 screen-256color (它已添加到{{3中的ncurses中}})。通过一些安装后的更改,该系统可能具有更晚的终端数据库。

使用 termcap 的应用程序不会看到此终端说明。科学Linux的bash和更少的程序可以使用termcap而不是terminfo。快速检查bash-3.2-21.el5的更改日志

* Fri Feb  1 2008 Miroslav Lichvar <mlichvar@redhat.com> - 3.2-21
- Link with libtermcap

在某些系统上,缺少termcap条目会引发警告。但是对于Scientific Linux 5,给定的警告消息来自less,它检查其终端描述(使用 termcap 接口),以确保它可以清除当前行的剩余部分,屏幕的其余部分和整个屏幕。

在Scientific Linux 5中,less包是使用ncurses构建的。 less使用TERM=screen-256color的问题将是这些可能性之一

  • 未真正安装screen-256color条目,或
  • ncurses提供的termcap接口存在一些问题。

虽然此时screen计划正在进行性能修复,但前者似乎更有可能,正如在2006年初screen-256color的一篇写得不好的条目的讨论中所看到的那样: October 2006 的。我从阅读中得到的是,有一些写得不好的终端描述( ncurses的一部分)产生了问题。当提议包含在ncurses(Re: screen-256color terminfo entry?)中时,问题已得到修复。在任何情况下,它都会在那时得到纠正。