suporte de 256 cores para o fundo vim no tmux

96

enquanto uso vim dentro do tmux, posso ver que o suporte de 256 cores está habilitado. com cores de $ tput

No entanto, alterar o esquema de cores no vim enquanto estiver no tmux alterará o esquema de cores em uma base por linha, mas não o plano de fundo inteiro. veja captura de tela

Aquiestáumtrechodomeuarquivo.vimrc,porexemplo.Meuesquemadecoresoriginaléescurosolarizadoedepoisdeexecutar:colorschememolokaivocêvêoqueacontece.

info

  • gnome-terminal
  • bash

nomeu~/.tmux.conf

set-gdefault-terminal"screen-256color"

no meu ~ / .vimrc

    set t_Co=256

no meu ~ / .bashrc

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"

no meu ~ / .profile

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi

Alguma idéia de como posso obter uma alteração completa no esquema de cores no vim? Todos os meus trechos dos arquivos estão bons?

    
por winchendonsprings 10.03.2012 / 22:56

7 respostas

74

Da aparência do seu .bashrc e do .profile, os shells dentro do tmux estão sobrescrevendo a configuração 'default-terminal' no seu tmux conf. Algo parecido com isto:

  • o tmux cria um novo shell com TERM=screen-256color
  • Execução de
  • .bashrc / .profile, defina TERM=xterm-256color
  • vim corre, tenta usar TERM incorreto para o tmux

você pode verificar isso executando

echo $TERM

em um novo shell tmux.

O Tmux é relativamente exigente em ter um terminal configurado corretamente. Se puder, defina o valor do termo na configuração do gnome-terminal, não no seu .bashrc. Caso contrário, coloque essas configurações em uma verificação de "screen" ou "screen-256color" TERM e não as redefina nesse caso.

Tmux REALMENTE quer que o terminal seja definido como screen ou screen-256color

    
por 11.03.2012 / 00:57
59

Conforme explicado aqui , desative Apagar cor de fundo (BCE ) limpando a opção t_ut terminal (execute :set t_ut= no Vim e depois pressione Controlar + L para atualizar a exibição do terminal) para que os esquemas de cores funcionem corretamente quando o Vim é usado dentro do tmux e da tela GNU.

    
por 07.03.2013 / 19:46
17

Encontrei uma maneira melhor de esta postagem . Você pode fazer um alias do tmux para tmux -2 , o que forçará o tmux a assumir que o shell está usando um terminal de 256 cores.

    
por 25.05.2013 / 14:52
2

Isso é o que funcionou para mim no #Ubuntu e #Mac:

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem

Recarregar configurações:

$ source ~/.bashrc # Ubuntu

$ source ~/.bash_profile # Mac

Configure o .bashrc para Mac (como é usado pelo tmux)

# File: ~/.bashrc (Mac)
source ~/.bash_profile

Configure a opção "default-terminal" em ~ / .tmux.conf.

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu
    
por 03.01.2016 / 07:59
1

Eu tive problemas muito parecidos com o gnome-terminal + tmux + vim, mas ele foi estendido também para um problema específico de combinação de chaves:. Eu tive que combinar algumas coisas juntos. Primeiro de tudo eu tive que configurar o meu .tmux.conf em:

# Ensure terminal starts with its own colour scheme (helps Vim/Neovim themes to not break)
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color" # no S-Fx keys ;-(
# and ensure the key-codes are xterm alike
set -g xterm-keys on

Em seguida, em .vimrc:

if $COLORTERM == 'gnome-terminal'
      set t_Co=256
endif
set t_ut=

E isso funcionou para as chaves e o histórico.

    
por 01.08.2016 / 12:37
1

Uma solução rápida é executar o seguinte no terminal.

export TERM=xterm-color

Você pode adicioná-lo ao seu ~/.bash_profile ou outro perfil para sempre ser definido no início.

    
por 27.02.2015 / 18:15
0

Só agora enfrentou o mesmo problema. Com base na resposta do bloy e no conteúdo atual do meu ~ / .profile (na verdade, é o mesmo que winchendonsprings ') eu resolvi meu problema da seguinte forma:

~/.profile :

if [[ -z $TMUX ]]; then
    if [ -e /usr/share/terminfo/x/xterm+256color ]; then # may be xterm-256 depending on your distro
        export TERM='xterm-256color'
    else
        export TERM='xterm'
    fi
else
    if [ -e /usr/share/terminfo/s/screen-256color ]; then
        export TERM='screen-256color'
    else
        export TERM='screen'
    fi
fi

A lógica é simples: se não estivermos dentro da sessão do tmux, use o xterm (colorido ou não). Caso contrário, a mesma coisa para a tela.

Talvez seja muito detalhado, mas você entendeu.

    
por 27.11.2014 / 10:37

Tags