web-dev-qa-db-fra.com

Prise en charge de 256 couleurs pour le fond vim dans tmux

lors de l'utilisation de vim dans tmux, je peux voir que la prise en charge de 256 couleurs est activée. avec des couleurs $ tput

Cependant, changer la couleur dans vim en tmux changera la couleur par ligne, mais pas l’arrière-plan. voir capture d'écran enter image description here

Voici un extrait du fichier .vimrc, par exemple. Mon schéma de couleurs d'origine est darkisé puis, après exécution: Colourscheme molokai, vous voyez ce qui se passe.

info

  • gnome-terminal
  • bash

dans mon ~/.tmux.conf

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

dans mon ~/.vimrc

    set t_Co=256

dans mon ~/.bashrc

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

dans mon ~/.profile

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

Des idées pour obtenir un changement complet de couleurs dans vim? Est-ce que tous mes extraits des fichiers sont beaux?

97
winchendonsprings

D'après l'apparence de vos fichiers .bashrc et .profile, les shells de tmux ont priorité sur le paramètre "terminal par défaut" de votre conf. Tmux. Quelque chose comme ça:

  • tmux crée un nouveau Shell avec TERM=screen-256color
  • .bashrc/.profile run, set TERM=xterm-256color
  • vim s'exécute, tente d'utiliser un TERM incorrect pour tmux

vous pouvez vérifier cela en exécutant

echo $TERM

dans un tmux frais Shell.

Tmux est relativement difficile à définir correctement. Si vous le pouvez, définissez la valeur du terme dans la configuration de gnome-terminal et non dans votre .bashrc. Sinon, entourez ces paramètres avec une vérification de TERM "screen" ou "screen-256color", et ne les réinitialisez pas dans ce cas.

Tmux veut VRAIMENT que le terminal soit réglé sur screen ou screen-256color

74
bloy

Comme expliqué ici , désactivez la suppression de la couleur d'arrière-plan (BCE) en désactivant l'option de terminal t_ut (exécutez :set t_ut= dans Vim, puis appuyez sur Control+L pour rafraîchir l’affichage du terminal) afin que les jeux de couleurs fonctionnent correctement lorsque Vim est utilisé dans les écrans tmux et GNU.

59
sunaku

J'ai trouvé un meilleur moyen sur ce post . Vous pouvez créer un alias de tmux en tmux -2, ce qui obligera tmux à supposer que le shell utilise un terminal à 256 couleurs.

17
Boogy

C'est ce qui a fonctionné pour moi dans # Ubuntu et # Mac:

# 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

Recharger les paramètres:

$ source ~/.bashrc # Ubuntu

$ source ~/.bash_profile # Mac

Configurer .bashrc pour Mac (tel qu'il est utilisé par tmux)

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

Configurez l’option "default-terminal" dans ~/.tmux.conf.

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

J'ai eu un problème très similaire pour gnome-terminal + tmux + vim mais il a été étendu également à un problème de combinaison de touches spécifique:. Je devais combiner quelques choses ensemble. Tout d'abord, je devais configurer mon fichier .tmux.conf dans:

# 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

Puis dans .vimrc:

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

Et cela a fait le travail pour les clés et le fond.

1
P4C

Une solution rapide consiste à exécuter les opérations suivantes dans le terminal.

export TERM=xterm-color

Vous pouvez l'ajouter à votre ~/.bash_profile ou à un autre profil pour qu'il soit toujours défini au début.

1
Peter Dietz

Juste maintenant fait face au même problème. Sur la base de la réponse de bloy et du contenu actuel de mon ~ /. Profil (en fait, c'est la même chose que winchendonsprings '), j'ai résolu mon problème comme suit:

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

La logique est simple: si nous ne sommes pas dans la session tmux, utilisez xterm (coloré ou non). Sinon la même chose pour l'écran.

C'est peut-être trop verbeux, mais vous avez eu l'idée.

0
evilguc