Vim no tmux exibe cores incorretas

57

Eu instalei o Ubuntu 11.10. Em seguida, baixou o tema Solarized para o Gnome Terminal. No terminal, meu vim parece bom: o plug-in vim-powerline é exibido corretamente e a sintaxe é destacada com cores apropriadas. Mas quando executo o tmux e o vim - o destaque da sintaxe usa apenas uma cor básica e o vim-powerline não exibe cores. Eu olhei para o FAQ no vim-powerline e a solução deve estar nesta linha em .tmux-config:

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

Mas isso não funciona. Eu olhei para o TERM e seu retorno 'xterm', então tentei:

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

Mas isso também não ajuda.

Esta é a única linha no .tmux.config. No .vimrc, tenho as seguintes linhas:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized
dhuCerbin
fonte
Não faço ideia por que você não recebeu votos positivos, nem mesmo daqueles que devem ter se beneficiado recebendo votos positivos de suas próprias respostas. +1 de mim. A pergunta é boa e também me ajudou a resolver meu próprio problema.
0xC0000022L

Respostas:

54

Iniciar o tmux com o seguinte sinalizador corrige isso para mim:

tmux -2

da página de manual tmux:

-2 Force o tmux a assumir que o terminal suporta 256 cores.

Cavala Sagrada
fonte
11
Boa dica. Quando a versão do Cygwin da tela começou a travar o vim, voltei ao tmux novamente muito rapidamente. Adoro.
grantbow
11
FYI - Essa foi a única coisa que funcionou para mim com o tmux 2.3 e a última linha de força. As cores no vim e na barra de status do tmux eram realmente estranhas.
Plasty Grove
28

Estou tendo o mesmo problema no Ubuntu 10.04 LTS usando o Byobu 5.17 e tmux 1.5 usando o Solarized mais recente do repositório GitHub.

Consegui corrigir parcialmente isso especificando $TERMno .bashrcarquivo:

export TERM="xterm-256color"

Parece, também, que há um erro registrado na barra de ativação, mas ainda não foi resolvido: o byobu não exibe as cores corretamente

Raminoid
fonte
2
Esta é a única coisa que funcionou para mim!
Tranquille
Também trabalhei no Ubuntu 14.04 com tmux 2.0
dukedave 16/03/16
Esta é a solução no OS X, assim haha
Jay
27

isso funcionou para mim

no .tmux.conf

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

no .vimrc

set term=screen-256color

remover o valor do termo antigo para .vimrc, acredite em mim isso funcionará

kiran ps
fonte
11
Não funciona para mim. tmux 1.8, vim 7.4.1816, ubuntu x86_64 com o kernel 3.13.0-92-genérico. PARA SUA INFORMAÇÃO.
fstang
11
Funcionou para mim sem as configurações .vimrc, apenas .tmux.conf.
Geison Santos
A configuração .tmux.conf fez o truque para mim!
Hesselbom 07/11
4

O tipo de terminal deve ser definido como screen-256color em ~ / .tmux.conf. Ele diz ao tmux o que definir a variável de ambiente TERM, para que não funcione na sessão atual - inicie uma nova e faça o teste.

Se ainda assim não funcionar, você pode executar o Vim usando:

TERM=screen-256color vi

Isso define a variável de ambiente apenas para uma execução vi pontual.

Se isso não faz com que o vim exiba todas as cores, teste se o seu terminal (não tenho certeza se você está testando com apenas um emulador de terminal) está compilado para suportar a paleta de 256 cores - faça o download e execute o script Perl abaixo em o emulador de terminal em questão.

http://scie.nti.st/dist/256colors2.pl

PS. Suponho que você já tenha corrigido o erro de digitação que Jordan notou.

Marcin Kaminski
fonte
2

Conforme explicado por Marcin Kaminski, se TERM=screen-256color vim <filename> funcionar para você, basta adicionar o seguinte ao seu.bashrc

TERM=screen-256color

e seguindo em seu .tmux.conf:

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

Eu tive o mesmo problema, isso funciona para mim.

user3908054
fonte
Este foi o único que funcionou para mim (tmux 1.8).
Yamaneko
Na verdade, acabei de testar e apenas mudar TERM=screen-256colorfoi o suficiente para mim, independentemente de definir o tmux para screen-256colorou para xterm-256color. Obrigado!
Yamaneko
1

Há um erro de digitação na última linha do seu .vimrc.

Deveria ser colorscheme solarized

Não estou certo se isso ajuda :)

jordanbrock
fonte
0

Você pode estar tendo o mesmo problema documentado nesta resposta.

Basicamente, a configuração .tmux.conf funciona e TERMé definida como screen-256color, mas o tmux abre o bash e chama seu .bashrc, que define TERMoutra coisa (talvez xterm-256color).

A solução é definir TERMas configurações do terminal em vez de .bashrc. Se isso não for uma opção, você pode verificar TERMdentro do .bashrc e não alterá-lo, se já estiver screen-256color.

jtpereyda
fonte
0

No shell iniciando o tmux, verifique se $TERMé xterm-256colorou screen-256color. Veja como alterar $ TERM :

Como alternativa, como o Holy Mackerel disse, você pode forçar o tmux a 256color via:

$ tmux -2
Wernight
fonte
0

[Solução] [1] que pode atrapalhar sua visão e tornar o Vim desagradável de usar por um longo período de tempo.

Você pode corrigir isso executando: set term = screen-256color no Vim ou reiniciando o Vim no ambiente TERM = screen-256color, como alguns especialistas recomendam: http://sunaku.github.io/vim-256color-bce.html

JEnriquePs
fonte
2
O que você quer dizer com [Solucion] [1]? Você estava tentando se referir ou vincular a outra resposta? As respostas nem sempre aparecem na mesma ordem. Eu recomendo expandir isso para esclarecer o que você está dizendo que pode "perturbar sua visão e tornar o Vim desagradável de usar por um longo período de tempo".
Eliah Kagan
0

No seu .bashrc ou .zshrc basta adicionar

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

e também começar com o tmux -2

Talal
fonte
0

Para quem está consumindo tempo com cores e se o vim solarizado não funciona no tmux, ou cansado de encontrar cores do vim, isso deve funcionar em um minuto, também é do repositório oficial a seguir.

yum install vim-jellybeans

ou

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

isso irá corrigi-lo com o belo conjunto de cores e os padrões são tão focados e úteis, se você também tentar definir esses realces, procure palavras, é isso. tudo já está pronto para ser usado. Você pode até mudar as cores no arquivo de configuração.

Se você não deseja instalar nada além de uma solução rápida simples, ignore acima e tente isso no vim

:colo ron você também pode substituir 'ron' pelos seguintes conjuntos e até restaurar para solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

e salve em .vimrc

colo ron
syntax on
Seandex
fonte
Quem deu o feedback negativo. deixe-me ouvir o motivo válido.
Seandex 10/03