it-swarm.com.de

Unterstützung für 256 Farben für vim Hintergrund in tmux

bei der verwendung von vim in tmux kann ich feststellen, dass die 256-farbunterstützung aktiviert ist. mit $ tput Farben

Wenn Sie jedoch das Farbschema in vim in tmux ändern, wird das Farbschema zeilenweise geändert, nicht jedoch der gesamte Hintergrund. siehe Screenshot enter image description here

Hier ist zum Beispiel ein Ausschnitt aus meiner .vimrc-Datei. Mein ursprüngliches Farbschema ist dunkel solarisiert und dann nach dem Ausführen: Farbschema molokai sehen Sie, was passiert.

info

  • gnome-terminal
  • bash

in meiner ~/.tmux.conf

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

in meinem ~/.vimrc

    set t_Co=256

in meinem ~/.bashrc

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

in meinem ~/.profile

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

Irgendwelche Ideen, wie ich eine vollständige Farbänderung in vim bekommen kann? Sehen alle meine Schnipsel aus den Dateien gut aus?

97

Nach dem Aussehen Ihres .bashrc und .profile überschreiben die Shells in tmux die 'default-terminal'-Einstellung in Ihrer tmux conf. Etwas wie das:

  • tmux erstellt neue Shell mit TERM=screen-256color
  • .bashrc/.profile ausführen, TERM=xterm-256color setzen
  • vim wird ausgeführt und versucht, für tmux einen falschen TERM zu verwenden

sie können dies überprüfen, indem Sie ausführen

echo $TERM

in einer frischen tmux Shell.

Tmux ist relativ pingelig, wenn es darum geht, ein Terminal richtig einzustellen. Wenn Sie können, legen Sie den Begriffswert in der Konfiguration von gnome-terminal fest, nicht in Ihrer .bashrc-Datei. Wenn dies nicht der Fall ist, setzen Sie diese Einstellungen mit einem Häkchen bei "screen" oder "screen-256color" TERM und setzen Sie sie in diesem Fall nicht zurück.

Tmux möchte das Terminal WIRKLICH auf screen oder screen-256color setzen

74
bloy

Wie hier erklärt Deaktivieren Sie Hintergrundfarbe löschen (BCE), indem Sie die Terminaloption t_ut deaktivieren (:set t_ut= in Vim ausführen und dann drücken Control+L um die Anzeige des Terminals zu aktualisieren), damit die Farbschemata ordnungsgemäß funktionieren, wenn Vim in tmux und im Bildschirm GNU verwendet wird.

59
sunaku

Ich habe einen besseren Weg gefunden in diesem Beitrag . Sie können einen Alias ​​von tmux auf tmux -2 setzen, wodurch tmux davon ausgeht, dass die Shell ein 256-Farben-Terminal verwendet.

17
Boogy

Das hat bei mir in #Ubuntu und #Mac funktioniert:

# 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

Einstellungen neu laden:

$ source ~/.bashrc # Ubuntu

$ source ~/.bash_profile # Mac

Richten Sie .bashrc für Mac ein (wie es von tmux verwendet wird)

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

Richten Sie in ~/.tmux.conf die Option "default-terminal" ein.

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu
3
Munish

Ich hatte ein sehr ähnliches Problem mit gnome-terminal + tmux + vim, aber es wurde auch auf bestimmte Tastenkombinationen erweitert:. Ich musste ein paar Dinge miteinander kombinieren. zuerst musste ich meine .tmux.conf einrichten in:

# 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

Dann in .vimrc:

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

Und das hat die Arbeit für die Tasten und den Hintergrund erledigt.

1
P4C

Eine schnelle Lösung besteht darin, Folgendes im Terminal auszuführen.

export TERM=xterm-color

Sie können es zu Ihrem ~/.bash_profile oder einem anderen Profil hinzufügen, damit es beim Start immer festgelegt wird.

1
Peter Dietz

Gerade jetzt stand das gleiche Problem. Basierend auf der Antwort von bloy und dem aktuellen Inhalt meines ~/.profile (tatsächlich ist es dasselbe wie winchendonsprings ') habe ich mein Problem wie folgt gelöst:

~/.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

Die Logik ist einfach: Wenn wir nicht in der tmux-Sitzung sind, verwenden Sie xterm (farbig oder nicht). Ansonsten das gleiche für Bildschirm.

Vielleicht ist es zu ausführlich, aber Sie haben die Idee.

0
evilguc