【问题标题】:tmux, Solarized, and terminfotmux、Solarized 和 terminfo
【发布时间】:2014-07-14 22:30:35
【问题描述】:

这是一个非常具体的问题,但根据我在网上看到的情况,这是一个非常普遍的问题。我使用的是基于 Red Hat 的相当旧版本的 Scientific Linux 5。我使用带有 Solarized vim 配色方案的 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',这是与配色方案相关问题的常见建议。

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

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

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

编辑:我应该提到TERM='screen-256color-bce' 和TERM='screen-256color' 有同样的问题。

【问题讨论】:

  • screen-256color 是 tmux 的推荐 TERM,您是否尝试将 set -g default-terminal "screen-256color" 放入 ~/.tmux.conf?
  • @romainl:我做到了,但同样的问题正在发生。似乎我的系统存在一些问题,导致在运行screen-256color 时引发“终端功能不全”警告,无论上下文如何。尽管我的机器安装了screen-256color,但这似乎是根本问题。你知道为什么会这样吗?是否有可能以某种方式在本地目录中安装screen-256color 的新版本(我没有root)并将terminfo 重定向到它?

标签: vim tmux color-scheme terminfo


【解决方案1】:

未指定用户环境,但可能使用bash及less(科学Linux 5没有more)。

Scientific Linux 5's ftp site 上的软件包列表显示 ncurses-5.5-24.20060715.src.rpm,其中不包括 screen-256color(它已添加到 October 2006 中的 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 接口存在一些问题。

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

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多