在 rxvt-unicode 终端内运行的 tmux 终端中,Vim 颜色无法正确显示

在 rxvt-unicode 终端内运行的 tmux 终端中,Vim 颜色无法正确显示

我正在使用 Debian(Jessie)。

我的 ~/.vimrc 文件包含以下语句。

colorscheme murphy

我的 ~/.Xresources 文件包含以下属性。

URxvt.background: #000000
URxvt.foreground: #e0e0e0
URxvt.scrollBar: false
URxvt.borderless: true
URxvt.font:xft:Bitstream Vera Sans Mono:pixelsize=16

当我vim在我的 rxvt-unicode 终端(urxvt)内启动时,我得到了预期的输出。

在 rxvt-unicode 中运行的 Vim

但是当我在 tmux 终端tmux内启动urxvt然后vim在 tmux 终端内启动时,颜色太亮了。

在 tmux 中运行的 Vim 在 rxvt-unicode 中运行

我怎样才能解决这个问题?

答案1

出现此问题的原因是 rxvt-unicode (urxvt) 终端仅支持 88 种颜色,而 tmux 终端支持 256 种颜色。

urxvt 的输出:

susam@nifty:~$ tput colors
88

因此,当 tmux 启动时,它仅使用 8 种颜色

susam@nifty:~$ tput colors
8

将以下 tmux 命令添加到 ~/.tmux.conf 没有帮助。

set -g default-terminal screen-256color

有了 ~/.tmux.conf 中的这一行,当 tmux 启动时,它似乎使用了 256 种颜色。

susam@nifty:~$ tput colors
256

然而,这并没有帮助,因为尽管 tmux 似乎使用了 256 种颜色,但底层 rxvt-unicode (urxvt) 终端无法正确显示它们,因为它仅支持 88 种颜色。因此,Vim 仍然显示太亮的颜色。

解决方案:安装 rxvt-unicode-256color 包。

Debian 中有一个 rxvt-unicode-256color 软件包,它附带支持 256 种颜色的 urxvt 终端。安装 rxvt-unicode-256color 解决了该问题。

我使用的命令:

aptitude update
aptitude purge rxvt-unicode
aptitude install rxvt-unicode-256color

现在颜色看起来有点不同。

在此处输入图片描述

但体验和tmux一致。

在此处输入图片描述

答案2

Susam Pal 的回答很棒,对我很有用。不过,我仍然有一个小问题,因为男人突出显示的搜索结果斜体。根据tmux 常见问题解答

Screen 的 terminfo 描述缺少斜体模式并取而代之的是突出模式,但使用与 urxvt 用于斜体的转义序列相同

以下是从终端修复此问题的方法(改编自常见问题解答):

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen-256color"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it-256color|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

然后,更改 ~/.tmux.conf 中的以下 tmux 行:

set -g default-terminal screen-it-256color

相关内容