在tmux模式中丢失vim配色方案

我正在运行iterm2,当我在tmux模式下,我在vim中设置的配色方案不显示。只有我设定的配色方案。如果我从shell运行vim,配色方案显示正确-只有当我在tmux模式。

我尝试在vim中设置:colorscheme molokai(见下面的截图),它没有改变-同样,iterm2的默认配色方案仍然保留。

我是否遗漏了对iterm或tmux.conf的一些设置?我的图都在github上。

109712 次浏览

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

$ tmux -2

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

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

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

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

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

set -g default-terminal "xterm"

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

这有点过时,但值得一提的是,使用screen通常会破坏Home和End键。使用

export TERM="xterm-256color"

它应该保持这些功能,并允许配色方案(或电力线)工作良好。

我尝试了上面所有的解决方案,最后对我有用的是在.tmux.conf中放入以下几行:

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

我没有多少运气尝试导出不同的TERM或设置默认终端在我的.tmux.conf

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

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

我不确定为什么需要这个重写,因为我的TERM=xterm和我已经将iTerm设置为xterm,但它似乎是有效的。

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

我让我的设置在我的本地机器(OSX 10.9.5 with iTerm2)上工作,而没有对.bashrc.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进程。

你可以通过在tmux会话中执行echo $TERM来测试Vim所看到的内容。它一直说screen作为值,直到我重新启动所有tmux进程,此时它像预期的那样反映了xterm-256color

希望这能有所帮助。

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

tmux -2

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

这对我很有用

我需要vim在ubuntu的终端上使用tmux正确显示,在windows上使用cygwin/mintty。我把答案像这样组合起来。

. 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页面这个块游标问题

如果你使用tmuxinatormux,你需要在.bashrc.zshrc中添加这些:

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

这些力用256色在终端上。

那么tmuxtmuxinatormux命令都将工作。

为了在Ubuntu和Mac中设置正确的颜色并解决渲染问题:

check this

如果你发现自己的处境和我一样,那上面的方法都没用。试试这个:

.tmux.conf:

set -g default-terminal "xterm"

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

alias tmux="tmux -2"

然后运行:

killall tmux

然后重新启动tmux

我已经尝试了上面所有的指令,我发现最重要的事情是我必须显式地在我的.bashrc文件中添加以下一行。

export TERM=screen-256color

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

如果有人需要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(通过添加xterm-256color.vimrc来启用24位颜色)
  • tmux 2.3(添加set -ga terminal-overrides ",xterm-256color:Tc".tmux.conf)

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

希望这能有所帮助。

在macOS Sierra 10.12.6下,在.tmux.conf中添加以下一行对我来说是有效的,

Set -g default-terminal "screen-256color"

因为这是谷歌上的第一个结果,因为上面没有一个有用..我想张贴这个,以便有人可能会发现它有帮助

.vimrc:

set background=dark
set t_Co=256

HTH

只是不得不处理这个问题,尽管之前发布的所有答案都很有帮助,但它们并没有解决我的问题。

我的问题被我的.vimrc中的下面一行删除修复了:

set termguicolors

这是多余的另一个指令。

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

export TERM="screen-256color"

一切都是美好和丰富多彩的。

我已经删除了行set termguicolors,但它不起作用。 在.vimrc中设置set notermguicolors也可以

我使用的是Ubuntu bionic 18.04.4 LTS和tmux 2.6。 我也有同样的问题,它可以通过简单地将此添加到.bashrc

来解决
export TERM=screen-256color

当然,不要忘记来源。 source ~/.bashrc < / p >

或者重启你的终端机

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

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

在一篇关于alacitty回购的文章中找到了它们,在YodaEmbedding提供的评论中:

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

我使用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回购问题的解决方案: https://github.com/tmux/tmux/issues/1246 < / p >

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

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

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

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

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

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

ENV:

Fedora 29工作站x86_64, GNOME终端3.30.1

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

GNU bash, version 4.4.23(1)-release (x86_64- rehat -linux- GNU)

tmux 2.7

Vim使用的是太阳能方案。

.vimrc

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


syntax enable
set background=dark
colorscheme solarized
...

$TERM在bash中的值是:

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

Mehthod 1:作品。

检查tmux会话中的$TERM值。得到

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

因此,只需在tmux会话中设置export TERM=screen-256color即可。此方法仅在会话的当前窗格中有效。


方法2:作品。

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

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

然后关闭所有tmux会话。

开始一个新的会话并检查tmux会话中的$TERM值。得到

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

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

我还在~/.tmux.conf中尝试了xterm-256colorscreen-256color。它们都可以很好地为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#why-do-you-use-the-screen-terminal-description-inside-tmux

其他有用的谈话有在tmux# 699中改变了Vim配色方案256 -颜色-支持- - vim -背景- - - - - - - tmux让- 256 -颜色- - -在tmux工作tmux -词-和- 256 -颜色-支持

我用软呢帽。

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

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

然后将其添加到.vimrc

set background=dark
set t_Co=256