The*_*ird 7 colors vim terminal tmux iterm
当我运行 tmux 时,我无法在 vim 中使用所有颜色。我相信 TERM 变量或 256colors 存在某种问题,但我已经做了我能在网上找到的所有东西,使 256 色在 vim、tmux 和 iTerm 中工作,但没有任何东西可以修复它。这是一个小问题,但它严重困扰着我。
这是通过 iTerm 在 vim 中的示例代码文件:

这是通过 tmux 和 iTerm 在 vim 中的同一个文件:

注意背景颜色看起来有点不匹配,只有在那里编写代码时。为什么会这样?
我有set t_Co=256我的vimrc,我的iTerm终端设置为xterm-256color,我有set -g default-terminal xterm-256color我的tmux.conf,我有:
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)
在我的.profile. 这个确切的问题在我工作的基于 Ubuntu 的机器上被复制,我在那里使用所有相同的配置文件。这至少将问题隔离为与 OS/iTerm 无关。
小智 8
一个老问题,但它在我的谷歌搜索中排名很高,但没有帮助我。这就是最终为我解决的问题
在.tmux.conf 中:
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
Run Code Online (Sandbox Code Playgroud)
在.vimrc 中:
if exists('+termguicolors')
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
Run Code Online (Sandbox Code Playgroud)
小智 7
将下面的行添加到 .tmux.conf
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
您仍然需要将下面的行添加到 .vimrc
set term=screen-256color
Run Code Online (Sandbox Code Playgroud)
最后,需要将别名添加到 .bashrc
alias tmux='tmux -2'
Run Code Online (Sandbox Code Playgroud)