在 tmux 中打开 vim,我得到了粗体字体

在 tmux 中打开 vim,我得到了粗体字体

所以我遇到了一个问题,当在 tmux 中打开 vim 时,所有字体都变成粗体。我的配置是:设置 t_Co=256。即使将其设置为 8,某些关键字上的某些粗体也会消失。我使用的是 Freebsd 和使用 uxterm 的 dwm。我的 vim 颜色主题是“宇航员”。有没有什么线索可以解释为什么会发生这种情况以及如何修复它?

附加信息:

  • 它只发生在 tmux 中
  • 在 xterm 中没问题
  • tmux 之外的 echo $TERM 是“rxvt”
  • tmux 中的 echo $TERM 是“屏幕”

答案1

我遇到了类似的问题,斜体和反向视频被切换了。

“Screen 的 terminfo 描述缺少斜体模式,而代之以 standout 模式,但使用与 urxvt 用于斜体相同的转义序列。这意味着寻找斜体的应用程序(如 vim)将找不到它,并可能会改为反向,而要求 standout 的应用程序(如 less)最终将使用斜体而不是反向。为了让应用程序知道 tmux 支持斜体并使用正确的转义序列进行 standout,您需要创建一个新的 terminfo 文件,其中包含修改后的 sgr、smso、rmso、sitm 和 ritm 条目:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|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 在 ~/.tmux.conf 中使用它:

set -g default-terminal "screen-it"

如果您的终端支持 256 色,请使用:

$ screen_terminfo="screen-256color"

而不是“屏幕”。有关详细信息,请参阅有关 256 色支持的常见问题解答条目。另请注意,tmux 仍会在不支持斜体的终端上显示反向视频。”

常见问题解答结束 http://tmux.cvs.sourceforge.net/viewvc/tmux/tmux/FAQ

相关内容