在tmux模式下丢失vim colorscheme

时间:2012-04-15 00:18:07

标签: macos vim tmux iterm

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

我在vim中尝试设置:colorscheme molokai(见下面的截图)并且它没有改变 - 再次,iterm2的默认colorscheme仍然存在。

我错过了iterm或tmux.conf的设置吗?我的dotfles在这里上了github。

21 个答案:

答案 0 :(得分:241)

我遇到了同样的问题。唯一的区别是我使用solarize而不是molokai

要解决此问题,我已在~/.bashrc中设置了别名:

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

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

set -g default-terminal "xterm"

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

答案 1 :(得分:69)

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

$ tmux -2

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

答案 2 :(得分:62)

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

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

答案 3 :(得分:26)

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

我的设置在本地计算机上运行(OSX 10.9.5与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看到的内容。在我重新启动所有tmux进程之前,它一直说screen为值,此时它按预期反映xterm-256color

希望有所帮助。

答案 4 :(得分:19)

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

export TERM="xterm-256color"

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

答案 5 :(得分:14)

我需要vim在ubuntu上的终端和windows上的cygwin / mintty中正确显示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

基于此问题的答案,this Vim wiki pagethis block cursor question

答案 6 :(得分:10)

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

export TERM=screen-256color

我不知道为什么别名tmux =" TERM = screen-256color-bce tmux"没有成功。 我使用Sierra 10.12.1。

答案 7 :(得分:9)

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

从版本2.2开始,Tmux支持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添加任何其他内容。

希望这可以提供帮助。

答案 8 :(得分:5)

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

.vimrc中的

set background=dark
set t_Co=256

HTH

答案 9 :(得分:4)

在.tmux.conf中添加以下行为macOS Sierra 10.12.6,

工作

set -g default-terminal“screen-256color”

答案 10 :(得分:3)

如果您使用Logger.i("Info", "my sample log"); tmuxinator,则需要在mux.bashrc中添加这些内容:

.zshrc

这些力量在终端中使用256色。

然后alias tmux='TERM=screen-256color tmux -2' alias tmuxinator='TERM=screen-256color tmuxinator' alias mux='TERM=screen-256color mux' tmuxtmuxinator命令都会有效。

答案 11 :(得分:2)

如果你发现自己和我一样,那以上都没有用......试试这个:

.tmux.conf中的

set -g default-terminal "xterm"
bash配置中的

(可能是.bashrc.bash_profile):

alias tmux="tmux -2"

然后运行:

killall tmux

然后重新启动tmux

答案 12 :(得分:2)

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

check this

答案 13 :(得分:1)

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

tmux -2

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

这对我有用

答案 14 :(得分:1)

我尝试在TERM中导出其他.tmux.conf或设置默认终端时运气不佳。

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

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

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

答案 15 :(得分:1)

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

即可解决
export TERM=screen-256color

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

或者只是重新启动终端

答案 16 :(得分:0)

只是不得不处理这个问题,虽然以前发布的所有答案都有帮助,但在我的案例中他们没有解决问题。

我的问题是通过删除 .vimrc中的以下行修复的:

set termguicolors

无论如何都是另一条指令。

现在,我的.tmux.conf中的以前的anwsers中找到了以下行:

export TERM="screen-256color"

一切都很美好。

答案 17 :(得分:0)

我已经删除了行set termguicolors,但这行不通。 在set notermguicolors中设置.vimrc即可。

答案 18 :(得分:0)

在我的.tmux.conf中使用这两行对我有用,我正在将Ubuntu 20.04与Alacritty一起使用。

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

在YodaEmbedding提供的评论中找到了有关失职回购的问题:

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

答案 19 :(得分:0)

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

t.testRun.errs

(1)编辑.tmux.conf

killall tmux

(2)编辑:.vimrc

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

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

答案 20 :(得分:0)

假设您已经有与终端匹配的 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"

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

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