2

这是一个非常具体的问题,但根据我在网上看到的情况,这是一个非常普遍的问题。我使用的是基于 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'了,这是与配色方案相关问题的常见建议。

我也知道 terminfoscreen-256color在我的机器上可用。

所以,真的,主要令人困惑的是,当使用 时TERM='screen-256color',当似乎没有任何问题时,我会收到有关完整功能的警告。

我没有 root 访问权限,因此理想情况下,任何修复建议都不需要。

编辑:我应该提到这TERM='screen-256color-bce'给出了与TERM='screen-256color'.

4

1 回答 1

2

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

Scientific Linux 5 的 ftp 站点上的软件包列表显示 ncurses-5.5-24.20060715.src.rpm,其中不包括(它于 2006 年10 月screen-256color添加到 ncurses 中)。通过一些安装后的更改,该系统可能具有较晚的终端数据库。

使用termcap的应用程序不会看到此终端描述。Scientific Linux 的 bash 和 less 程序可以使用 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 接口存在一些问题。

虽然这段时间一直在对程序进行性能修复,但前者似乎更有可能,正如2006 年初screen对一篇写得不好的条目的讨论中所见: Re: screen-256color terminfo entry? . 我从阅读这篇文章中得到的是,有一些写得很糟糕的终端描述(不是ncurses 的一部分)导致了问题。当它被提议包含在 ncurses 中时(2006 年 10 月),问题已经得到修复。无论如何,它会在那个时候得到纠正。screen-256color

于 2017-02-19T19:36:50.667 回答