这是一个非常具体的问题,但根据我在网上看到的,这是一个令人惊讶的普遍问题。我使用的是一个相当老的版本的Scientific Linux 5,它是基于Red Hat的。我使用solized vim配色方案的vim,并且我的TERM
环境变量通常设置为xterm-256color
。这工作得很好,直到我开始使用tmux。对于vim中的非空行,配色方案仅扩展到文档字符的末尾,其余空白为纯背景。
在线指南中的股票修复是设置TERM='screen-256color'
。然而,在这样做之后,当我试图做一些无害的事情(如阅读手册页)时,我会得到不祥的警告:WARNING: terminal is not fully functional - (press RETURN)
。然而,一切似乎都很正常,solalized的bug也被修复了。
我发现了一个功能修复-默认使用TERM='xterm-256color'
并将这行添加到我的。bashrc:
alias v='function _vim(){ TERM='screen-256color'; vim $1; TERM='xterm-256color'; };_vim'
但它看起来像一个hack。有趣的是,我还设置了alias tmux='tmux -2'
,这是与配色方案相关的问题的常见建议。
我也知道在我的机器上有screen-256color
的终端。
所以,实际上,主要的令人困惑的事情是,当使用TERM='screen-256color'
时,我得到了那些关于完整功能的警告,而似乎没有任何错误。
我没有root权限,所以理想情况下,任何修复建议都不需要这个。
EDIT:我应该提到TERM='screen-256color-bce'
给出了与TERM='screen-256color'
相同的问题。
没有指定用户的环境,但可能使用bash或更少(Scientific Linux 5没有more
)。
科学Linux 5的ftp站点上的包列表显示ncurses-5.5-24.20060715.src。它不包括 screen-256color
(它在2006年10月被添加到ncurses中)。该系统可能会在安装后进行一些更改,从而具有较新的终端数据库。
使用termcap的应用程序将看不到此终端描述。Scientific 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
包是用护士构建的。less
使用TERM=screen-256color
的问题将是以下可能性之一
- screen-256color条目没有真正安装,或者
- 护士提供的termcap接口有问题。
虽然这个时候screen
程序正在进行性能修复,但前者似乎更有可能,从2006年初关于screen-256color
的一个写得很差的条目的讨论中可以看出:Re: screen-256color terminfo entry?。我从阅读这篇文章中得到的是,有一些写得很差的终端描述(不是ncurses的部分)产生了这个问题。到2006年10月提议将其纳入护理系统时,这个问题已经得到了解决。在任何情况下,它都应该在那个时候被纠正。