Obtendo 256 cores para trabalhar no tmux


177

Tenho 256 cores funcionando perfeitamente konsole,. Eu pensei em tmuxtentar, porque, ao contrário da tela, parece suportar o vimodo. No entanto, acho que as cores do meu prompt são exibidas e isso é mais provável porque tenho um prompt do modo de 256 cores. O que preciso fazer tmuxpara reconhecer todas as 256 cores?


2
tmux -2Eu tive que fazer isso no terminator e fiquei um pouco surpreso. A -2bandeira diz ao tmux para forçar o uso de 256 cores ... quer o seu terminal goste ou não ... dun dun dunnn: P
Dylan

Respostas:


253

O FAQ do Tmux desaconselha explicitamente a definição de TERM para algo diferente de screen ou screen-256color no seu arquivo init do shell, portanto não faça isso!

Aqui está o que eu uso:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

e no meu .tmux.conf:

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

Aliasing tmuxpara " tmux -2" também deve fazer o truque.


4
Eu gosto da maneira de defini-lo na .tmux.conf melhor ... usando o shell para definir ele simplesmente não parece certo
xenoterracide

6
Esquisito. Você não precisa tmux -2do OSX, mas precisa do Gnome Terminal. Obrigado pela informação, adicionada aos meus pseudônimos!
FX

11
No Kubuntu 13.10, a configuração .tmux.conf sozinha não me devolveu minhas 256 cores (que realçavam o destaque no modo visual vim), mas o alias funcionava. Certamente preferiria uma solução apenas para arquivo .tmux.conf.
Jacob Dalton

11
ssh'd em uma máquina Ubuntu (do OS X Terminal), o terminal padrão .tmux.conf era tudo o que eu precisava.
Duelin marcadores 13/03

2
para mim, parece que tudo o que preciso fazer é TERM=screen-256color tmuxsem criar um .tmux.confarquivo. Estou esquecendo de algo?
Joelostblom 26/04/2015

39

Tente configurar explicitamente 256 cores no seu bashrc ou zshrc:

export TERM=xterm-256color

ou

export TERM=screen-256color

Se você tiver problemas com o tmux não limpando as cores de plano de fundo corretamente ao usar a configuração de termos da tela, tente:

export TERM=screen-256color-bce

11
o primeiro é a minha configuração padrão de TERM ... Acabei de experimentar os outros 2 e meu prompt ainda não mostra as cores quando entro no tmux. (Eu gostaria de observar que o tmux mostra cores na parte inferior) ... parece que quando eu entro no tmux, ele redefine o TERM para TERM = tela ... talvez haja uma maneira de substituir isso em uma configuração?
Xenoterracide

nvm ... acho que colocá-lo no rc do meu shell funciona ... como é irritante o fato de ele ignorar a variável env env que é definida quando executo o tmux ... acho que vou ter que colocar um condicional no meu rc.
Xenoterracide

11
-bce não é compatível com tmux. O Tmux não suporta a eliminação da cor de fundo:
Dustin Kirkland

11
Eu tive esse problema com o roxterm. Espero que adicionar roxterm a isso ajude as pessoas a encontrar a mesma solução que eu tinha. Acabaria no vim e a seleção de linhas os faria desaparecer. Extremamente difícil de procurar. O roxterm, por padrão, é configurado com apenas $ TERM = xterm, o que não é bom.
BeepDog

5
-1, você não deve definir incondicionalmente no seu arquivo de inicialização do shell. A configuração para xterm-256colorsubstituí-lo dentro do tmux também e configurá-lo para screen-256colorfora do tmux pode levar a erros de exibição.
precisa saber é o seguinte

19

Conforme as perguntas frequentes do tmux , adicione isso ao seu ~/.tmux.conf:

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

Em seguida, adicione este alias para tmux:

alias tmux='tmux -2'

Não há necessidade de substituir a TERMvariável em seu perfil ou ao iniciar tmux.

Mais informações: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim


2
Configurar o tmux foi suficiente para mim; Não precisei definir alias (embora provavelmente não doesse).
Anishpatel 10/05

Configurar o tmux sozinho funciona para mim. O alias não foi suficiente.
Harry Moreno

12

A versão mais recente do ncurses é fornecida com uma entrada terminfo tmux-256color (a FAQ menciona isso). Como exemplo, um benefício do uso do tmux-256color sobre o screen-256color é que o itálico é renderizado corretamente (a tela não suporta itálico).

Portanto, se você tiver o pacote ncurses mais recente, o seguinte também funcionará:

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

Gostaria de fazer notar que esta solução parece exigir tmux 2.6ou melhor
zzxyz

3

Nota realmente importante aqui se você estiver executando um Ubuntu mais antigo que o Bionic (18.04). Se você está executando tmux 2.1ou mais velho, e provavelmente está, basicamente nenhum conselho que você lê on-line sobre o tmux funcionará .. para qualquer coisa.

tmux -Vé um teste fácil para isso. Se você 2.1vir ou mais, poderá construir o tmux a partir da fonte ou adicionar um repositório não oficial. Atualizei meu tmux com:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Pessoalmente, depois de atualizar para 2.6: 1) minhas chaves estão funcionando melhor, 2) conselhos on-line realmente funcionam, 3) minhas cores não são loucas. Grande melhoria.

(Aqui está um link para a página do repositório, btw): https://launchpad.net/~hnakamur


2

Não consegui explicar por que isso funciona, mas resolveu o problema para mim.

~ / .tmux.conf

set-option -g default-command bash

11
Eu tentei isso como o último recurso e surpreendentemente funcionou!
v0d1ch

1

Esta é a minha solução .... Eu edito meu arquivo .bashrc e adiciono este

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

Espero que funcione na sua


10
Por que se preocupar com o if? Você pode apenas definir a variável.
Joeytwiddle
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.