Vim in tmux zeigt falsche Farben an

57

Ich habe Ubuntu 11.10 installiert. Dann Solarized Theme für Gnome Terminal heruntergeladen. Vom Terminal aus sieht mein Vim gut aus: Das Plugin Vim-Powerline wird korrekt angezeigt und die Syntax mit den richtigen Farben hervorgehoben. Aber wenn ich tmux starte und dort vim starte, verwendet Syntax Highlight nur eine Grundfarbe und vim-powerline zeigt keine Farben an. Ich habe mir die FAQ zu vim-powerline angesehen und die Lösung sollte diese Zeile in .tmux-config sein:

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

Aber es geht nicht. Ich habe mir TERM angesehen und es ist return 'xterm', also habe ich versucht:

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

Aber auch das hilft nicht.

Dies ist die einzige Zeile in .tmux.config. In .vimrc habe ich folgende Zeilen:

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
quelle
Keine Ahnung, warum Sie keine Gegenstimmen erhalten haben, auch nicht von denen, die davon profitiert haben müssen, dass sie Gegenstimmen von ihren eigenen Antworten erhalten haben. +1 von mir. Die Frage ist vernünftig und hat mir geholfen, mein eigenes Problem zu lösen, indem ich es gefunden habe.
0xC0000022L

Antworten:

54

Das Starten von tmux mit dem folgenden Flag behebt dies für mich:

tmux -2

aus der tmux man page:

-2 Erzwinge, dass tmux annimmt, dass das Terminal 256 Farben unterstützt.

Heilige Makrele
quelle
1
Guter Tipp. Als die Cygwin-Version von screen anfing, vim zum Absturz zu bringen, wechselte ich sehr schnell wieder zu tmux. Liebe es.
Grantbow
1
Zu Ihrer Information - Dies war das einzige, was mit tmux 2.3 und der neuesten Powerline für mich funktioniert hat. Farben in Vim und TMUX Statusleiste waren wirklich seltsam.
Plasty Grove
28

Ich habe das gleiche Problem auf Ubuntu 10.04 LTS mit Byobu 5.17 & tmux 1.5 mit dem neuesten Solarized aus dem GitHub-Repo.

Ich konnte dies teilweise beheben, indem ich $TERMin der .bashrcDatei Folgendes angab:

export TERM="xterm-256color"

Es scheint auch, dass ein Fehler auf dem Launchpad vorliegt , der jedoch noch nicht behoben ist: byobu zeigt die Farben nicht richtig an

Raminoid
quelle
2
Dies ist das einzige, was bei mir funktioniert hat!
Tranquille
Arbeitete auch an Ubuntu 14.04 mit tmux 2.0
dukedave
Dies ist die Lösung auch für OS X haha
Jay
27

das hat bei mir funktioniert

im .tmux.conf

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

im .vimrc

set term=screen-256color

Entfernen Sie den alten Begriffswert für .vimrc. Glauben Sie mir, das wird funktionieren

kiran ps
quelle
1
Funktioniert bei mir nicht. tmux 1.8, vim 7.4.1816, ubuntu x86_64 mit kernel 3.13.0-92-generic. Zu Ihrer Information.
Dienstag,
1
Es hat bei mir ohne .vimrc-Einstellungen funktioniert, nur mit .tmux.conf.
Geison Santos
Die .tmux.conf Einstellung hat den Trick für mich gemacht!
Hesselbom
4

Der Terminaltyp sollte in ~ / .tmux.conf auf screen-256color eingestellt sein. Es teilt tmux mit, wie die Umgebungsvariable TERM gesetzt werden soll, damit sie für die aktuelle Sitzung nicht funktioniert. Starten Sie eine neue Sitzung und testen Sie sie anschließend.

Wenn es immer noch nicht funktioniert, können Sie Vim folgendermaßen ausführen:

TERM=screen-256color vi

Dadurch wird die Umgebungsvariable nur für eine einmalige vi-Ausführung festgelegt.

Wenn dies nicht dazu führt, dass vim alle Farben anzeigt, testen Sie, ob Ihr Terminal (ich bin nicht sicher, ob Sie nur mit einem Terminalemulator testen) zur Unterstützung der 256-Farben-Palette kompiliert ist. Laden Sie das folgende Perl-Skript herunter und führen Sie es aus der betreffende Terminal-Emulator.

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

PS. Ich gehe davon aus, dass Sie den Tippfehler, den Jordanbrock bemerkt hat, bereits korrigiert haben.

Marcin Kaminski
quelle
2

Wie von Marcin Kaminski erklärt, wenn es TERM=screen-256color vim <filename> für dich funktioniert, dann füge einfach Folgendes zu deinem hinzu.bashrc

TERM=screen-256color

und folgende in Ihrem .tmux.conf:

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

Ich hatte das gleiche Problem, das funktioniert bei mir.

user3908054
quelle
Dies war die einzige, die für mich funktioniert hat (tmux 1.8).
Yamaneko
Eigentlich habe ich gerade getestet und nur das Ändern hat TERM=screen-256colormir gereicht, unabhängig davon, ob ich tmux auf screen-256coloroder auf setze xterm-256color. Danke!
Yamaneko
1

In der letzten Zeile steht ein Tippfehler .vimrc.

Es sollte sein colorscheme solarized

Ich bin mir nicht sicher, ob das hilft :)

Jordanbrock
quelle
0

Möglicherweise haben Sie das gleiche Problem in dieser Antwort dokumentiert .

Grundsätzlich funktioniert die .tmux.conf-Einstellung und TERMist auf gesetzt screen-256color, aber dann öffnet tmux die bash und ruft Ihre .bashrc auf, die TERMauf etwas anderes gesetzt ist (vielleicht xterm-256color).

Die Lösung besteht darin, die Einstellungen TERMin Ihren Terminals und nicht in .bashrc vorzunehmen. Wenn dies keine Option ist, können Sie TERMin .bashrc nachsehen und es nicht ändern, wenn es bereits vorhanden ist screen-256color.

jtpereyda
quelle
0

Überprüfen Sie in der Shell, die tmux startet, ob $TERMentweder xterm-256coloroder screen-256color. Siehe wie $ TERM zu ändern :

Alternativ können Sie, wie Holy Mackerel sagte, tmux auf 256color zwingen, indem Sie:

$ tmux -2
Wernight
quelle
0

[Lösung] [1], die Ihre Sicht stören und die Verwendung von Vim über einen längeren Zeitraum unangenehm machen kann.

Sie können dies beheben, indem Sie Folgendes ausführen: set term = screen-256color in Vim oder indem Sie Vim in der TERM = screen-256color-Umgebung neu starten, wie einige Experten empfehlen: http://sunaku.github.io/vim-256color-bce.html

JEnriquePs
quelle
2
Was meinst du mit [Solucion] [1]? Haben Sie versucht, auf eine andere Antwort zu verweisen oder diese zu verlinken? Die Antworten erscheinen nicht immer in derselben Reihenfolge. Ich empfehle, dies zu erweitern, um zu verdeutlichen, was "Ihre Sicht stören und die Verwendung von Vim über einen längeren Zeitraum unangenehm machen kann".
Eliah Kagan
0

Fügen Sie in Ihrem .bashrc oder .zshrc einfach hinzu

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

und auch mit dem tmux -2 beginnen

Talal
quelle
0

Für diejenigen, die viel Zeit mit Farben verbringen und Solarized Vim nicht mit tmux verwenden oder es leid sind, Vim-Farben zu finden, sollte dies in einer Minute funktionieren.

yum install vim-jellybeans

oder

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

Dies wird es mit dem schönen Farbsatz beheben und Muster sind so fokussiert und nützlich, wenn Sie auch versucht werden, diese Hervorhebungen und Suchwörter zu setzen, das ist es. alles hat sich schon zum einsatz gesetzt. Sie können sogar die Farben in der Konfigurationsdatei ändern.

Wenn Sie nur eine einfache und schnelle Lösung installieren möchten, ignorieren Sie diese und versuchen Sie es in vim

:colo ron Sie können 'ron' auch durch die folgenden Sätze ersetzen und sogar wiederherstellen solo default

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

und in .vimrc speichern

colo ron
syntax on
Seandex
quelle
Wer auch immer das negative Feedback gegeben hat. lass mich den gültigen Grund hören.
Seandex