Vim in tmux mostra colori sbagliati


57

Ho installato Ubuntu 11.10. Quindi scaricato il tema Solarized per Gnome Terminal. Dal terminale la mia vim sembra a posto: il plugin vim-powerline viene visualizzato correttamente e la sintassi viene evidenziata con i colori appropriati. Ma quando eseguo tmux e lì eseguo vim, l'evidenziazione della sintassi utilizza solo un colore di base e vim-powerline non visualizza colori. Ho guardato le FAQ su vim-powerline e la soluzione dovrebbe essere questa linea in .tmux-config:

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

Ma non funziona Ho guardato TERM ed è restituito 'xterm' quindi ho provato:

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

Ma anche questo non aiuta.

Questa è l'unica riga in .tmux.config. In .vimrc ho le seguenti righe:

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

Non ho idea del perché non hai ottenuto voti, nemmeno da quelli che devono aver beneficiato ottenendo voti dalle loro stesse risposte. +1 da me. La domanda è valida e mi ha aiutato a risolvere anche il mio problema trovandolo.
0xC0000022L

Risposte:


54

L'avvio di tmux con il seguente flag risolve questo problema per me:

tmux -2

dalla pagina man di tmux:

-2 Forza tmux ad assumere che il terminale supporti 256 colori.


1
Buon suggerimento. Quando la versione Cygwin dello schermo ha iniziato a bloccarsi su vim sono tornato di nuovo su tmux molto rapidamente. Lo adoro.
grantbow,

1
Cordiali saluti - Questa è stata l'unica cosa che ha funzionato per me con tmux 2.3 e l'ultima powerline. I colori nella barra di stato di vim e tmux erano davvero strani.
Plasty Grove,

28

Sto riscontrando lo stesso problema su Ubuntu 10.04 LTS utilizzando Byobu 5.17 e tmux 1.5 utilizzando l'ultima versione di Solarized dal repository GitHub.

Sono stato in grado di risolvere parzialmente questo specificando $TERMnel .bashrcfile:

export TERM="xterm-256color"

Sembra anche che ci sia un bug archiviato sul launchpad, ma non è ancora stato risolto: byobu non mostra correttamente i dircolors


2
Questa è l'unica cosa che ha funzionato per me!
Tranquille,

Ha anche lavorato su Ubuntu 14.04 con tmux 2.0
dukedave il

Questa è la soluzione anche su OS X haha
Jay

27

questo ha funzionato per me

nel .tmux.conf

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

nel .vimrc

set term=screen-256color

rimuovi il valore del vecchio termine per .vimrc, credimi funzionerà


1
Non funziona per me. tmux 1.8, vim 7.4.1816, ubuntu x86_64 con kernel 3.13.0-92-generico. PER TUA INFORMAZIONE.
fang

1
Ha funzionato per me senza le impostazioni .vimrc, solo .tmux.conf.
Geison Santos,

L'impostazione .tmux.conf ha fatto il trucco per me!
hesselbom,

4

Il tipo di terminale deve essere impostato su screen-256color in ~ / .tmux.conf. Indica a tmux cosa impostare la variabile di valutazione TERM, quindi non funzionerà per la sessione corrente: avviarne una nuova e testarla.

Se il problema persiste, puoi eseguire Vim usando:

TERM=screen-256color vi

Questo imposta la variabile d'ambiente solo per un'esecuzione vi una tantum.

Se ciò non consente a vim di visualizzare tutti i colori, verifica se il tuo terminale (non sono sicuro se stai testando con un solo emulatore di terminale) è compilato per supportare la tavolozza di 256 colori - scarica ed esegui lo script Perl di seguito da l'emulatore di terminale in questione.

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

PS. Presumo che tu abbia già corretto l'errore di battitura notato.


2

Come spiegato da Marcin Kaminski, se TERM=screen-256color vim <filename> funziona per te, aggiungi semplicemente seguito al tuo.bashrc

TERM=screen-256color

e seguenti nel tuo .tmux.conf:

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

Ho avuto lo stesso problema, questo funziona per me.


Questo è stato l'unico che ha funzionato per me (tmux 1.8).
Yamaneko,

In realtà, ho appena testato e solo il cambiamento è TERM=screen-256colorstato sufficiente per me, indipendentemente dall'impostazione di tmux su screen-256coloro su xterm-256color. Grazie!
Yamaneko,

1

C'è un refuso nell'ultima riga del tuo .vimrc.

Dovrebbe essere colorscheme solarized

Non sono sicuro se questo aiuta :)


0

Potresti avere lo stesso problema documentato in questa risposta.

Fondamentalmente, l'impostazione .tmux.conf funziona, ed TERMè impostata su screen-256color, ma poi tmux apre bash e chiama il tuo .bashrc, che imposta TERMsu qualcos'altro (forse xterm-256color).

La soluzione consiste TERMnell'impostare le impostazioni del terminale anziché in .bashrc. Se questa non è un'opzione, puoi controllare TERMall'interno di .bashrc e non cambiarlo se è già screen-256color.



0

[Solucion] [1] che può disturbare la vista e rendere Vim sgradevole da usare per un lungo periodo di tempo.

È possibile risolvere questo problema eseguendo: set term = screen-256color in Vim o rilanciando Vim nell'ambiente TERM = screen-256color, come alcuni esperti raccomandano: http://sunaku.github.io/vim-256color-bce.html


2
Cosa intendi con [Solucion] [1]? Stavi cercando di fare riferimento o collegare ad un'altra risposta? Le risposte non appaiono sempre nello stesso ordine. Raccomando di ampliarlo per chiarire che cosa stai dicendo potrebbe "disturbare la vista e rendere Vim spiacevole da usare per un lungo periodo di tempo".
Eliah Kagan,

0

Nel tuo .bashrc o .zshrc basta aggiungere

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

e inizia anche con il tmux -2


0

Per coloro che stanno consumando tempo sui colori e se Vim solarizzato non funziona su Tmux, o stanco di trovare i colori di VIM, questo dovrebbe funzionare in un minuto, anche dal repository ufficiale è il seguente.

yum install vim-jellybeans

o

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

questo lo risolverà con il bellissimo set di colori e i motivi sono così focalizzati e utili, se si tenta anche di impostare quelle luci, cercare le parole, eccolo. tutto è già pronto per l'uso. Puoi anche cambiare i colori nel file di configurazione.

Se non si desidera installare altro che una semplice soluzione rapida, ignorare sopra e provare questo in vim

:colo ron puoi anche sostituire 'ron' con i seguenti insiemi e persino ripristinarlo solo default

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

e salva in .vimrc

colo ron
syntax on

Chiunque abbia dato il feedback negativo. fammi sentire il motivo valido.
Seandex,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.