Tmux mengubah bagian dari latar belakang di vim

15

Ini sepertinya hanya terjadi ketika menggunakan vim di dalam tmux. Saya juga menggunakan iTerm 2.

Jika saya membuat panel tmux baru atau mengubah ukuran panel tmux, langsung terlihat seperti ini:

latar belakang kacau di vim

Dan kemudian satu-satunya cara untuk memperbaikinya adalah dengan menggulir di vim, dan kembali ke ini:

latar belakang yang baik di vim

Apa yang menyebabkan ini?

aharris88
sumber
Ini terjadi dalam standar gnome-terminaljuga, tanpa tmux.
wchargin
Lihat respons ini untuk mendapatkan inspirasi tentang cara memperbaiki masalah ini: stackoverflow.com/a/37863269/5153834
bloodrootfc

Jawaban:

19

Anda mungkin mencoba menambahkan yang berikut ke .vimrc Anda.

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

The t_utpilihan (default = y) menjelaskan pegangan bagaimana vim apa yang ingin sebagai warna latar belakang dibandingkan dengan mencoba menggunakan warna latar belakang saat ini. Cuplikan ini menghapus opsi itu.

Jika tidak, maka Anda mungkin mencoba

set ttyfast

yang merupakan opsi yang menangani bagaimana vim redraws layar.

davidlowryduda
sumber
2
Pengaturan opsi t_ut berhasil!
aharris88
Ini tidak berhasil untuk saya. Saya sudah siap ttyfast, dan mencoba membersihkan t_uttanpa efek. Setup saya sama dengan OP, dengan pengecualian yang saya gunakan termguicolorsdi dalam Tmux yang dikonfigurasi untuk dukungan warna yang sebenarnya. Vim menggambar dengan indah di dalam iTerm, tetapi mulai menunjukkan keanehan layar yang sama seperti di atas ketika saya berlari di dalam Tmux. Beri tahu saya jika saya harus membuka pertanyaan baru; Saya pikir saya akan menjangkau di sini karena saya pada dasarnya mengalami masalah yang sama.
djmoch
1

Saya percaya ini terkait ttyfastsehingga layar tidak digambar ulang sepenuhnya. Coba atur ke:

'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.
dipecat
sumber