Tmux change une partie de l'arrière-plan dans vim


15

Cela ne semble se produire que lors de l'utilisation de vim à l'intérieur de tmux. J'utilise également iTerm 2.

Si je crée un nouveau volet tmux ou redimensionne un volet tmux, il ressemble immédiatement à ceci:

foiré fond dans vim

Et puis la seule façon de le corriger est de faire défiler dans vim, et cela revient à ceci:

bon fond à vim

Qu'est-ce qui peut causer cela?


Cela se produit également en standard gnome-terminal, sans tmux.
wchargin

Consultez cette réponse pour vous inspirer sur la manière de résoudre ce problème: stackoverflow.com/a/37863269/5153834
bloodrootfc

Réponses:


19

Vous pouvez essayer d'ajouter ce qui suit à votre .vimrc.

if &term =~ '256color'
  " disable Background Color Erase (BCE)
  set t_ut=
endif

L' t_utoption (par défaut = y) décrit comment vim gère ce qu'il veut comme couleurs d'arrière-plan par rapport à la tentative d'utilisation de la couleur d'arrière-plan actuelle. Cet extrait efface cette option.

Sinon, vous pourriez essayer de

set ttyfast

qui est une option qui gère la façon dont vim redessine les écrans.


2
La définition de l'option t_ut a fonctionné!
aharris88

Ça n'a pas marché pour moi. J'ai déjà réglé ttyfastet essayé d'effacer t_utsans effet. Ma configuration est la même que l'OP, à l'exception que j'utilise à l' termguicolorsintérieur d'un Tmux configuré pour une véritable prise en charge des couleurs. Vim dessine magnifiquement à l'intérieur d'iTerm, mais commence à montrer la même bizarrerie d'écran que ci-dessus lorsque je cours à l'intérieur de Tmux. Faites-moi savoir si je dois ouvrir une nouvelle question; Je pensais que j'allais tendre la main ici car je vis essentiellement le même problème.
djmoch

1

Je pense que cela est lié au ttyfastfait que l'écran n'est pas entièrement redessiné. Essayez de le régler sur:

'ttyfast' 'tf'      boolean (default off, on when 'term' is xterm, hpterm,
                    sun-cmd, screen, rxvt, dtterm or
                    iris-ansi; also on when running Vim in
                    a DOS console)
            global
            {not in Vi}
    Indicates a fast terminal connection.  More characters will be sent to
    the screen for redrawing, instead of using insert/delete line
    commands.  Improves smoothness of redrawing when there are multiple
    windows and the terminal does not support a scrolling region.
    Also enables the extra writing of characters at the end of each screen
    line for lines that wrap.  This helps when using copy/paste with the
    mouse in an xterm and other terminals.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.