249

我正在运行 iterm2,当我处于 tmux 模式时,我在 vim 中设置的颜色方案不会出现。只有我在 iterm 中设置的配色方案。如果我从 shell 运行 vim,colorscheme 看起来是正确的 - 只有当我处于 tmux 模式时。

我已经尝试:colorscheme molokai在 vim 中进行设置(请参见下面的屏幕截图)并且它没有改变 - 同样,iterm2 的默认颜色方案仍然存在。

我是否缺少 iterm 或 tmux.conf 的某些设置?我的 dotfles 在 github 上。

4

23 回答 23

269

我有同样的问题。唯一的区别是我使用的solarize是 then molokai

为了解决这个问题,我在以下位置设置了一个别名~/.bashrc

alias tmux="TERM=screen-256color-bce tmux"

并设置default-terminal选项~/.tmux.conf

set -g default-terminal "xterm"

最后,$ source ~/.bashrc加载新的别名。

于 2012-04-22T01:23:12.650 回答
100

我尝试了上述所有解决方案,最终对我有用的是将以下几行放入.tmux.conf

set -g default-terminal "xterm-256color"
于 2014-03-18T13:53:52.860 回答
79

正如@romainl 上面提到的,我需要通过添加-2标志来强制 tmux 使用 256 种颜色:

$ tmux -2

我添加alias tmux='tmux -2'到我的 bash_profile,所以,我不会忘记 :)

于 2012-04-15T16:33:47.010 回答
37

我才发现为什么我有很多困惑。我和这里的其他人一样,很难让默认终端设置生效。我记得我在后台有一个 tmux 会话。我重新连接了我的会话,关闭了我的进程,并关闭了所有 tmux 进程。下次我重新启动 tmux 时,默认终端设置.tmux.conf开始生效。我不知道其他人是否也在这样做,但我建议在修改.tmux.conf文件之前关闭所有 tmux 进程。

我的设置可以在我的本地机器(带有 iTerm2 的 OSX 10.9.5)上工作,而无需对.bashrcor进行任何修改.bash_profile。我所做的只是添加该行set -g default-terminal "xterm-256color"~/.tmux.conf重新启动所有 tmux 进程。

我的远程设置(SSH 到 Ubuntu 14.04)以完全相同的方式工作,无需对.bashrc. 我只是简单set -g default-terminal "xterm-256color"~/.tmux.conf在我的远程机器上添加并重新启动了所有远程 tmux 进程。

你可以echo $TERM在 tmux 会话中测试 Vim 看到的内容。它一直说screen是值,直到我重新启动所有 tmux 进程,此时它xterm-256color按预期反映。

希望有帮助。

于 2014-09-19T18:18:35.603 回答
21

所以这有点陈旧,但值得一提的是,使用屏幕经常会破坏 Home 和 End 键。使用

export TERM="xterm-256color"

in 应该保留这些功能并允许配色方案(或电源线)正常工作。

于 2013-06-10T20:36:22.043 回答
17

我需要 vim 在 ubuntu 的终端和 cygwin/mintty 的 Windows 上使用 tmux 正确显示。我通过结合这样的答案来实现它。

在 .bashrc 中:

alias tmux="tmux -2"

在 .vimrc 中:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

基于这个问题的答案,这个 Vim wiki 页面这个块光标问题

于 2015-07-06T21:18:51.420 回答
12

如果有人需要 24 位颜色支持:

Tmux 从 2.2 版开始支持 24 位颜色。如果您的终端支持 24 位颜色,请将您的终端添加到终端覆盖设置。例如,

set -ga terminal-overrides ",xterm-256color:Tc"

我的环境清单:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14(报表终端类型为xterm-256color
  • neovim 0.1.7(通过添加启用 24 位颜色:xterm-256colorto .vimrc
  • tmux 2.3(添加set -ga terminal-overrides ",xterm-256color:Tc".tmux.conf

我不需要添加任何其他内容.bashrc.zshrc.

希望这会有所帮助。

于 2017-02-26T03:48:43.083 回答
11

我已经尝试了上面的所有说明,我发现最重要的是我必须在我的 .bashrc 文件中明确添加以下行。

export TERM=screen-256color

我不知道为什么 alias tmux="TERM=screen-256color-bce tmux" 不起作用。我使用 Sierra 10.12.1。

于 2017-01-13T02:16:21.370 回答
9

由于这是 Google 上的第一个结果,并且以上都没有帮助..想要发布此内容,以便有人可能会发现它有帮助

.vimrc

set background=dark
set t_Co=256

高温高压

于 2018-02-23T04:28:54.910 回答
5

只需要处理这个问题,虽然以前发布的所有答案都有帮助,但在我的情况下它们并没有解决问题。

通过删除我的以下行来解决我的问题.vimrc

set termguicolors

无论如何,这与另一条指令有关。

现在,在我以前的答案中找到以下行.tmux.conf

export TERM="screen-256color"

一切都美好而多彩。

于 2018-04-01T21:26:09.827 回答
4

在 .tmux.conf 中添加以下行适用于 macOS Sierra 10.12.6,

设置 -g 默认终端“screen-256color”

于 2017-09-28T19:17:54.257 回答
3

如果您使用tmuxinatoror mux,则需要在.bashrcor中添加这些.zshrc

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

这些强制在终端中使用 256 色。

然后tmux,tmuxinatormuxcommand 将全部工作。

于 2015-10-28T13:18:14.763 回答
3

如果你发现自己和我在同一个位置,以上都不起作用..试试这个:

.tmux.conf

set -g default-terminal "xterm"

在 bash 配置中(可能是.bashrc.bash_profile):

alias tmux="tmux -2"

然后运行:

killall tmux

然后重新启动 tmux

于 2016-11-10T23:02:25.773 回答
3

我已经删除了 line set termguicolors,但它不起作用。set notermguicolors而是在.vimrc作品中设置。

于 2018-12-19T08:33:55.563 回答
2

在 tmux 手册页中,添加如下标志:

tmux -2

-2标志强制 tmux 在 256 色模式下运行。

这对我有用

于 2015-06-30T02:49:03.953 回答
2

为了设置正确的颜色并消除 Ubuntu 和 Mac 中的渲染问题:

检查这个

于 2016-01-03T07:04:05.627 回答
2

在我的 .tmux.conf 中使用这两行对我有用,我使用的是带有 Alacritty 的 Ubuntu 20.04。

set  -g default-terminal "tmux-256color"
set -ag terminal-overrides ",alacritty:RGB"

在 YodaEmbedding 提供的评论中,在 alacitty 的 repo 上找到了它们:

https://github.com/alacritty/alacritty/issues/109

于 2020-09-02T03:46:35.417 回答
1

尝试TERM在我的.tmux.conf.

我在 tmux 中修复 vim 颜色的解决方案是将这一行添加到.tmux.conf

set -g terminal-overrides 'xterm:colors=88'

我不确定为什么需要这个覆盖,因为我TERM=xterm和我也将 iTerm 设置为 xterm,但它似乎有效。

于 2014-07-15T13:59:57.447 回答
1

我正在使用 Ubuntu 仿生 18.04.4 LTS 和 tmux 2.6。我有同样的问题,只需将其添加到 .bashrc 即可解决

export TERM=screen-256color

当然不要忘记来源它。 source ~/.bashrc

或者只是重新启动您的终端

于 2020-03-06T16:04:12.167 回答
1

环境

Fedora 29 工作站 x86_64,GNOME 终端 3.30.1

VIM - Vi IMproved 8.1(2018 年 5 月 18 日,2019 年 3 月 8 日 09:25:44 编译)

GNU bash,版本 4.4.23(1)-release (x86_64-redhat-linux-gnu)

多路复用器 2.7

vim 正在使用日晒方案。

.vimrc

...
let g:solarized_termcolors=256
let g:solarized_termtrans=1

syntax enable
set background=dark
colorscheme solarized
...

bash 中的值$TERM是:

[u@loc ~]$ echo $TERM
xterm-256color
[u@loc ~]$ tput colors
256

方法1:有效。

检查$TERMtmux 会话中的值。得到

[u@loc ~]$ echo $TERM
screen
[u@loc ~]$ tput colors
8

所以,只需export TERM=screen-256color在 tmux 会话中设置。此方法仅适用于会话的当前窗格。


方法2:有效。

创建~/.tmux.conf文件并添加set -g default-terminal "tmux-256color"到文件中。

或者只是运行echo "set -g default-terminal \"tmux-256color\"" > ~/.tmux.conf

然后杀死所有 tmux 会话。

启动一个新会话并检查$TERMtmux 会话中的值。得到

[u@loc ~]$ echo $TERM
tmux-256color
[u@loc ~]$ tput colors
256

vim 彩色方案适用于所有窗格和所有 tmux 会话。

我也试过xterm-256colorscreen-256color~/.tmux.conf. 它们都可以很好地为 vim 方案着色。

顺便说一句,我的~/.bash_profile,~/.bashrc和中没有与此设置相关的任何配置~/.vimrc

另请参阅https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminalhttps://github.com/tmux/tmux/wiki/FAQ#为什么你使用屏幕终端描述内部 tmux

其他有用的讨论是tmux #699 中的 Vim 颜色方案更改256-color-support-for-vim-background-in-tmuxgetting-256-colors-to-work-in-tmuxtmux-term-and-256 -颜色支持

于 2021-08-30T10:54:05.397 回答
0

我正在使用 gnome 终端,这解决了问题,但是 (0) 不要忘记:

killall tmux

(1) 编辑 .tmux.conf

# 24 bit color
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"

(2) 编辑:.vimrc

" Enable true color
if exists('+termguicolors')
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
  set termguicolors
endif

rinetd 在 tmux repo 问题上发布的解决方案: https ://github.com/tmux/tmux/issues/1246

于 2020-12-11T11:42:58.630 回答
0

假设您已经有与终端匹配的 vim 颜色:

  1. 杀死所有正在运行的 tmux 会话tmux kill-server

  2. 在中为 tmux 创建用户配置文件~/.tmux.conf

  3. 添加到.tmux.conf以下行:
    set -g default-terminal "tmux-256color"
    set -ga terminal-overrides ",xterm-termite:Tc"

  4. 在命令行中运行echo $TERM

  5. 替换xterm-termite为返回的输出echo $TERM

于 2021-04-19T19:47:08.390 回答
0

我使用 Fedora 34。

我将此添加到 .tmux.conf 文件

set -g default-terminal "xterm-256color"

然后将其添加到 .vimrc

set background=dark
set t_Co=256
于 2021-09-28T01:21:49.257 回答