256 色支持 tmux 中的 vim 背景

win*_*ngs 104 vim colors tmux

在 tmux 中使用 vim 时,我可以看到启用了 256 色支持。使用 $tput 颜色

但是,在 tmux 中更改 vim 中的颜色方案将在每行的基础上更改颜色方案,而不是整个背景。看截图在此处输入图片说明

例如,这是我的 .vimrc 文件的片段。我原来的颜色方案是日光化的,然后在运行 :colorscheme molokai 后你会看到会发生什么。

信息

  • 侏儒终端
  • 猛击

在我的 ~/.tmux.conf

    set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)

在我的 ~/.vimrc

    set t_Co=256
Run Code Online (Sandbox Code Playgroud)

在我的 ~/.bashrc 中

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"
Run Code Online (Sandbox Code Playgroud)

在我的 ~/.profile 中

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi
Run Code Online (Sandbox Code Playgroud)

任何想法如何在 vim 中获得完整的配色方案?我所有的文件片段看起来都不错吗?

blo*_*loy 78

从 .bashrc 和 .profile 的外观来看,tmux 中的 shell 覆盖了 tmux conf 中的“默认终端”设置。像这样的东西:

  • tmux 创建新的 shell TERM=screen-256color
  • .bashrc/.profile 运行,设置 TERM=xterm-256color
  • vim 运行,尝试对 tmux 使用不正确的 TERM

你可以通过运行来检查这个

echo $TERM
Run Code Online (Sandbox Code Playgroud)

在一个新的 tmux 外壳中。

Tmux 对正确设置终端比较挑剔。如果可以,请在 gnome-terminal 的配置中设置 term 值,而不是在您的 .bashrc 中。如果失败,请通过检查“screen”或“screen-256color”术语来包围这些设置,并且在这种情况下不要重置它们。

Tmux 真的希望终端设置为screenscreen-256color

  • 嗯,你修好了。我只是在我的 .bashrc 和我的 .profile 文件中注释掉了与将颜色设置为 256 相关的任何内容。重新启动 tmux 和 vim 可以使用正确的背景并启用 256 种颜色。你能告诉我 gnome-terminal 配置文件在哪里吗?另外,当您说 tmux 希望终端设置为“scfeen-256color”时,您的意思是我的 tmux.conf 中有它吗?谢谢 (5认同)
  • 另外,是的,让 tmux 对它产生的 shell 做自己的事情。在 tmux conf 中保留 `set -g default-terminal "screen-256color"` 行。 (5认同)
  • 以上所有内容都是我所追求的(确保 TERM 正确设置并且没有在 tmux 中被覆盖),然后我不得不使用 'tmux -2' 来加载 tmux。 (2认同)

小智 65

如此处所述,通过清除终端选项(在 Vim 中运行,然后按+刷新终端显示)来禁用背景颜色擦除(BCE),以便在 tmux 和 GNU 屏幕中使用 Vim 时配色方案正常工作。t_ut:set t_ut=ControlL

  • 这是唯一最终对我有用的东西! (7认同)
  • 我最终将 `set t_ut=` 添加到我的 vimrc 中,这消除了手动使用命令的需要,并且不需要使用 <kbd>Control</kbd> + <kbd>L</kbd> 因为会话开始于BCE 禁用。 (3认同)

小智 17

我在这篇文章中找到了更好的方法。您可以为 tmux 创建一个别名,tmux -2这将强制 tmux 假定 shell 正在使用 256 色终端。


小智 5

这就是在 #Ubuntu 和 #Mac 中对我有用的方法:

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem
Run Code Online (Sandbox Code Playgroud)

重新加载设置:

$ source ~/.bashrc # Ubuntu

$ source ~/.bash_profile # Mac

为 Mac 设置 .bashrc(因为它被 tmux 使用)

# File: ~/.bashrc (Mac)
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

在 ~/.tmux.conf 中设置“default-terminal”选项。

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu
Run Code Online (Sandbox Code Playgroud)