Question

I'm running iterm2 and when I'm in tmux mode the colorscheme I have set in vim does not show up. Only the color scheme I've set in iterm. If I run vim from shell the colorscheme appears correct - its only when I'm in tmux mode.

I've tried setting :colorscheme molokai when in vim (see screenshot below) and it doesn't change - again, the default colorscheme for iterm2 remains.

Am I missing some setting to iterm or tmux.conf? My dotfles are up on github here.

Was it helpful?

Solution

I had the same problem. Only difference was I am using solarize rather then molokai.

To fix the issue, I have set up an alias in ~/.bashrc:

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

And set up the default-terminal option in ~/.tmux.conf:

set -g default-terminal "xterm"

Lastly, do $ source ~/.bashrc to load new alias.

OTHER TIPS

I tried all the solutions above and what finally worked for me is putting the following lines in .tmux.conf:

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

As @romainl mentions above, I needed to force tmux to use 256 colors by adding the -2 flag:

$ tmux -2

I added alias tmux='tmux -2' to my bash_profile, so, I don't forget :)

I just discovered why I was having a lot of confusion. I, like others here, was having a difficult time getting the default-terminal setting to take effect. I remembered that I had a tmux session in the background. I re-attached my session, closed out my processes, and closed ALL tmux processes. The next time I restarted tmux the default-terminal setting in .tmux.conf began to take effect. I don't know if others are doing this as well but I recommend closing all tmux processes before modifying the .tmux.conf file.

I got my setup to work on my local machine (OSX 10.9.5 with iTerm2) without any modification to .bashrc or .bash_profile. All I did was add the line set -g default-terminal "xterm-256color" to ~/.tmux.conf and restarted all tmux processes.

I got my remote setup (ssh to Ubuntu 14.04) to work exactly the same way without any modifications to .bashrc. I simply added set -g default-terminal "xterm-256color" to ~/.tmux.conf on my remote machine and restarted all remote tmux processes.

You can test what Vim is seeing by doing echo $TERM from within a tmux session. It kept saying screen as the value until I restarted all tmux processes, at which point it reflected xterm-256color as expected.

Hope that helps.

So this a bit on the stale side, but it's might be worth mentioning that using screen will often break the Home and End keys. Using

export TERM="xterm-256color"

in should keep the functionality of these and allow the color scheme (or powerline) to work fine.

I needed vim to display correctly with tmux in terminal on ubuntu and cygwin/mintty on windows. I got it to work by combining the answers like this.

In .bashrc:

alias tmux="tmux -2"

In .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

based on answers from this question, this Vim wiki page and this block cursor question

I have tried all of the instructions above, and I found out the most important thing is I have to explicitly add the following line in my .bashrc file.

export TERM=screen-256color

I don't know why alias tmux="TERM=screen-256color-bce tmux" doesn't work out. I use Sierra 10.12.1.

In case anyone needs 24-bit color support:

Tmux supports 24-bit color as of version 2.2. If your terminal supports 24-bit color, add your terminal to the terminal-overrides setting. For example,

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

My environment checklist:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (Report Terminal Type is xterm-256color)
  • neovim 0.1.7 (Enable 24-bit color by adding: xterm-256color to .vimrc)
  • tmux 2.3 (Add set -ga terminal-overrides ",xterm-256color:Tc" to .tmux.conf)

Nothing else I need to add in .bashrc or .zshrc.

Hope this could help.

Since this is the first result on Google and since none of the above helped..wanted to post this so that someone might find it helpful

in .vimrc:

set background=dark
set t_Co=256

HTH

Just had to deal with this problem, and although all previously posted answers were helpful, they did not solve the issue in my case.

My problem was fixed by removing the following line in my .vimrc:

set termguicolors

which was redondant with another instruction anyway.

Now, with the following line found in previous anwsers in my .tmux.conf:

export TERM="screen-256color"

all is nice and colorful.

Adding the following line in .tmux.conf worked for me with macOS Sierra 10.12.6,

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

If you find yourself in the same sitation as me, that none of the above worked.. try this:

in .tmux.conf:

set -g default-terminal "xterm"

in bash config (maybe .bashrc or .bash_profile):

alias tmux="tmux -2"

and then run:

killall tmux

and then relaunch tmux

If you use tmuxinator or mux, you will need to add these in .bashrc or .zshrc:

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

These forces to use 256-color in terminal.

Then tmux, tmuxinator and mux command will all work.

In order to set up correct color and to get rid of rendering issue in both Ubuntu and Mac:

check this

From the tmux man page, adding flag as following:

tmux -2

This -2 flag forces tmux to run on 256-color mode.

This works for me

I've removed the line set termguicolors, but it doesn't work. Setting set notermguicolors instead in the .vimrc works.

I didn't have much luck trying to export a different TERM or set default-terminal in my .tmux.conf.

My solution for fixing vim colors within tmux was adding this line to .tmux.conf:

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

I'm not sure why this override was needed given that my TERM=xterm and I have iTerm set to xterm as well, but it seems to work.

I am using Ubuntu bionic 18.04.4 LTS and tmux 2.6. I have the same issue and it can be resolved by simply adding this into .bashrc

export TERM=screen-256color

And ofcourse don't forget to source it. source ~/.bashrc

Or just restart your teminal

Using these two lines in my .tmux.conf worked for me, I'm using Ubuntu 20.04 with Alacritty.

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

Found them in an issue on alacitty's repo, in the comment provided by YodaEmbedding:

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

I'm using gnome terminal and this solved the problem, but (0) don't forget to:

killall tmux

(1) Edit .tmux.conf

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

(2) Edit: .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

Solution posted by rinetd on tmux repo issue: https://github.com/tmux/tmux/issues/1246

Assuming that you already have vim colors matching with your terminal:

  1. Kill all tmux sessions running tmux kill-server

  2. Create a user configuration file for tmux in ~/.tmux.conf

  3. Add to the .tmux.conf the following lines:
    set -g default-terminal "tmux-256color"
    set -ga terminal-overrides ",xterm-termite:Tc"

  4. Run in your command line echo $TERM

  5. Replace xterm-termite with the output returned by echo $TERM

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top