所以我遇到了一个问题,当在 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