当我运行 tmux 时,我很难让所有颜色在 vim 中工作。我相信这是 TERM 变量或 256 色的某种问题,但我已经尽了我能在网上找到的所有方法来让 256 色在 vim、tmux 和 iTerm 中工作,但没有任何解决办法。这是一个小问题,但它严重困扰着我。
下面是通过 iTerm 在 vim 中运行的示例代码文件:
这是通过 tmux 和 iTerm 在 vim 中运行的同一个文件:
请注意,仅当在此处编写代码时,背景颜色看起来略有不匹配。为什么会这样呢?
我的 iTerm 终端设置set t_Co=256
为vimrc
,我的 iTerm 终端设置为xterm-256color
,我的 iTerm 终端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
在我的.profile
。这个确切的问题在我工作时基于 Ubuntu 的机器上得到了复制,并且我在那里使用了所有相同的配置文件。这至少将问题隔离为与操作系统/iTerm 无关。
答案1
这是一个老问题,但它在我的谷歌搜索中排名很高,但对我没有帮助。这最终为我解决了这个问题
在.tmux.conf:
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
在.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
答案2
将以下行添加到后.tmux.conf
set -g default-terminal "screen-256color"
您仍然需要将下面的行添加到.vimrc
set term=screen-256color
最后需要添加别名.bashrc
alias tmux='tmux -2'
答案3
在 tmux 内部,您需要设置TERM=screen-256color
.它可能是这样的这里这仅适用于 tmux 内部,但不适用于tmux.conf
.检查您是否无条件地覆盖该TERM
值,例如您的值.bashrc
,或者当您在 tmux 中打开 shell 时获取的任何内容。