Question Prise en charge de 256 couleurs pour l'arrière-plan de vim dans tmux


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

Cependant, si vous modifiez le schéma de couleurs dans vim dans tmux, le schéma de couleurs changera pour chaque ligne, mais pas pour tout l'arrière-plan. voir la capture d'écran enter image description here

Voici un extrait du fichier my .vimrc par exemple. Mon schéma de couleurs d'origine est solarisé en noir et ensuite, après la course: colorscheme molokai, vous voyez ce qui se passe.

Info

  • gnome-terminal
  • frapper

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 sur la façon dont je peux obtenir un changement complet de couleurs dans vim? Est-ce que tous mes extraits des fichiers ont l'air bons?


93
2018-03-10 21:56


origine


Que se passe-t-il si vous appuyez sur control-l en mode normal ou exécutez la commande ": redraw"? - Heptite
@Heptite rien ne se passe encore le changement de couleur est par ligne comme dans la capture d'écran - winchendonsprings


Réponses:


Du point de vue de vos fichiers .bashrc et .profile, les shells contenus dans tmux remplacent le paramètre 'default-terminal' de votre configuration tmux. Quelque chose comme ça:

  • tmux crée un nouveau shell avec TERM=screen-256color
  • .bashrc / .profile exécuter, définir TERM=xterm-256color
  • vim s'exécute, essaye d'utiliser TERM incorrect pour tmux

vous pouvez vérifier cela en courant

echo $TERM

dans un nouveau shell tmux.

Tmux est relativement difficile d'avoir un terminal correctement défini. Si vous le pouvez, définissez le terme dans la configuration de gnome-terminal, pas dans votre .bashrc. A défaut, entourez ces paramètres avec une vérification pour "screen" ou "screen-256color" TERM, et ne les réinitialisez pas dans ce cas.

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


73
2018-03-10 23:57



Eh bien, vous l'avez réparé. J'ai simplement fait remarquer quoi que ce soit dans mon .bashrc et mes fichiers .profile qui ont à voir avec la mise en la couleur à 256. Restarted tmux et vim travaille avec l'arrière-plan approprié et 256 couleurs activées. Pouvez-vous me dire où est le fichier de configuration de gnome-terminal? Aussi, quand vous dites que tmux veut que le terminal soit réglé sur 'scfeen-256color, voulez-vous dire que je l'ai dans mon tmux.conf? Merci - winchendonsprings
Je n'ai pas de machine avec gnome-terminal à portée de main pour vérifier, mais le paramètre devrait être quelque part dans l'interface graphique, probablement sous «paramètres de profil» ou quelque chose comme ça. - bloy
En outre, oui, laissez tmux faire sa propre chose aux obus qu'il génère. Quitter le set -g default-terminal "screen-256color" ligne dans votre tmux conf. - bloy
Tout ce qui précède est ce que j'étais après (en m'assurant que TERM était correctement défini et non écrasé dans tmux), et ensuite je devais utiliser 'tmux -2' pour charger tmux. - phantomwhale
Essayer if [[ $TERM == xterm ]]; then TERM=xterm-256color; fiça a fonctionné pour moi - asymmetric


Comme expliqué ici, désactiver Effacement de la couleur de fond (BCE) en effaçant le t_ut option terminal (exécution :set t_ut= dans Vim puis appuyez sur Contrôle+L pour rafraîchir l'affichage du terminal) afin que les schémas de couleurs fonctionnent correctement lorsque Vim est utilisé dans les écrans tmux et GNU.


57
2018-03-07 18:46



c'est la seule chose qui a finalement fonctionné pour moi! - Oz123
J'ai fini par ajouter set t_ut= à mon vimrc qui élimine la nécessité d'utiliser manuellement la commande et il n'y a pas besoin d'utiliser <kbd> Contrôle </ kbd> + <kbd> L </ kbd> depuis la session commence par BCE désactivée. - erran
Ceci est essentiel lors de l'utilisation de PuTTY. Toutes les combinaisons TERM sont insuffisantes lorsque le programme de couleurs a un arrière-plan. Excellent ajout au fil. - botimer
Cela fonctionne, cependant, lorsque cette solution est appliquée, le copier-coller avec la souris copie et colle également les espaces des lignes (s'ils sont mis en évidence). - horse hair


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


17
2018-05-25 12:52





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

Configurez .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

2
2018-01-03 06:59





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 tout autre profil doit toujours être mis au démarrage.


1
2018-02-27 17:15



Merci! C'était tout ce que je devais ajouter à mon .zshrc pour que le mode visuel soit réellement visible. - danmcardle


J'ai eu un problème très similaire pour gnome-terminal + tmux + vim mais il a été étendu à un problème spécifique de combinaison de touches:. J'ai dû combiner quelques choses ensemble. Tout d'abord, j'ai dû 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
2017-08-01 10:37





Juste maintenant fait face au même problème. Basé sur bloyla réponse et le contenu actuel de mon ~ / .profile (en fait, il est identique à ressorts') 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.

Peut-être que c'est trop verbeux, mais vous avez eu l'idée.


0
2017-11-27 09:37