在tmux模式下丢失vim colorscheme

tri*_*ten 218 macos vim iterm tmux

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

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

我错过了一些iterm或tmux.conf的设置吗?我的dotfles在这里是github.

Sey*_*ong 243

我有同样的问题.唯一的区别是我正在使用solarize而不是molokai.

要解决此问题,我在以下位置设置了别名~/.bashrc:

alias tmux="TERM=screen-256color-bce tmux"
Run Code Online (Sandbox Code Playgroud)

default-terminal~/.tmux.conf以下位置设置选项:

set -g default-terminal "xterm"
Run Code Online (Sandbox Code Playgroud)

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

  • 就个人而言,我不得不在OS X上使用`set -g default-terminal"screen-256color"`来工作而不是`xterm`,sshed进入Ubuntu盒子.我提到了这个网站:http://rhnh.net/2011/08/20/vim-and-tmux-on-osx (95认同)
  • 我使用它而不是`tmux -2`,因为这更详细. (18认同)
  • 这里的别名没有意义:它假装tmux它在屏幕或tmux中运行,这几乎不是这种情况.要告诉tmux假设它运行的终端支持256种颜色,运行`tmux -2`或`tmux -2 attach`(tmux决定每次将新的或现有的会话连接到终端).一个明智的别名是`别名tmux ='tmux -2'`.另请参见[tmux,TERM和256色支持](http://unix.stackexchange.com/questions/118806/tmux-term-and-256-colours-support) (7认同)
  • 屏幕256的默认终端在OSX上工作.谢谢! (3认同)
  • 我读了一些其他答案(找不到参考文献)强制执行TERM不是一个好习惯,尽管我不确定.由于带有`set -g default-terminal"screen-256color"的`tmux -2`选项对我有用,这将是我的选择.但无论如何,谢谢! (3认同)
  • 如果`.tmux.conf`设置似乎没有生效,请关闭***所有***tmux进程并重新启动.您可以在`.bashrc`中设置`set -g default-terminal"screen-256color"`而不设置任何别名.我认为人们正在做类似环境变量别名的解决方法,因为它们在配置`.tmux.conf`后没有关闭所有tmux进程. (3认同)

tri*_*ten 72

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

$ tmux -2
Run Code Online (Sandbox Code Playgroud)

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


Ele*_*Ent 64

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

set -g default-terminal "xterm-256color"
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说是优胜美地终点站. (3认同)
  • 适用于 Ubuntu 20.04 (2认同)

Che*_*hev 29

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

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

希望有所帮助.

  • 谢谢,关键词是"关闭所有tmux进程" (8认同)
  • 杀死tmux进程对我有用!谢谢@Chev (2认同)
  • 我也是!如果这个答案更远,我本可以花更少的时间。 (2认同)

Jpa*_*ick 21

所以这有点陈旧,但值得一提的是,使用屏幕往往会打破Home和End键.运用

export TERM="xterm-256color"
Run Code Online (Sandbox Code Playgroud)

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


And*_*ton 14

我需要vim在ubuntu上的终端和windows上的cygwin/mintty中正确显示tmux.通过结合这样的答案,我得到了它的工作.

在.bashrc中:

alias tmux="tmux -2"
Run Code Online (Sandbox Code Playgroud)

在.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
Run Code Online (Sandbox Code Playgroud)

根据这个问题的答案,这个Vim wiki页面这个块游标问题


Lio*_*Lai 11

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

export TERM=screen-256color
Run Code Online (Sandbox Code Playgroud)

我不知道为什么别名tmux ="TERM = screen-256color-bce tmux"无效.我使用Sierra 10.12.1.


Yan*_*hen 10

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

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

set -ga terminal-overrides ",xterm-256color:Tc"
Run Code Online (Sandbox Code Playgroud)

我的环境清单:

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

没有其他我需要添加.bashrc.zshrc.

希望这可以帮助.


Kar*_*ius 6

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

killall tmux
Run Code Online (Sandbox Code Playgroud)

(1)编辑.tmux.conf

# 24 bit color
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
Run Code Online (Sandbox Code Playgroud)

(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
Run Code Online (Sandbox Code Playgroud)

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


Zac*_*Zhu 5

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

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


HK_*_*HK_ 5

由于这是在Google上的第一个结果,而且上述方法均无济于事。

.vimrc

set background=dark
set t_Co=256
Run Code Online (Sandbox Code Playgroud)

高温超导


小智 5

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

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

set termguicolors
Run Code Online (Sandbox Code Playgroud)

无论如何,这与另一条指令是多余的。

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

export TERM="screen-256color"
Run Code Online (Sandbox Code Playgroud)

一切都是美好而多彩的。