tmux vim colorscheme background tidak ditampilkan

12

Saya telah menginstal tmux tetapi sekarang mode teks vim colorschemes tidak mengisi warna latar belakang dengan benar. Berikut ini tampilannya dengan colorscheme xoria256 di terminal Ubuntu 14.10 yang normal:

masukkan deskripsi gambar di sini

Dan di sini ketika saya menjalankannya di terminal yang sama persis setelah tmux:

masukkan deskripsi gambar di sini

Jadi seperti yang Anda lihat desktop ditampilkan di mana saja di mana tidak ada teks di vim. Saya memiliki terminal 256 warna.

.Tmux.conf saya:

~ cat .tmux.conf
set -g mode-mouse on
set -g default-terminal "screen-256color"

dan saya memiliki terminal 256 warna:

~ tput colors
256

Bagaimana cara mendapatkan tmux berfungsi dengan benar dengan skema warna 256-warna vim yang berfungsi dengan baik di terminal normal?

Thomas Browne
sumber
Dalam pengalaman saya, tmux berperilaku aneh ketika diluncurkan di dalam gnome-terminal. Coba luncurkan tmux dengan TERM=xterm tmuxdan lihat apakah ia berperilaku berbeda. Jika xtermtidak berhasil, coba xterm-256coloratau xterm-color.
jw013
@ jw03 Sayangnya tidak ada opsi yang berfungsi untuk memperbaikinya. Perilaku identik. Perilaku yang sama jika saya menjalankan tmux di dalam terminator
Thomas Browne
1
Dalam shell di dalam tmux, berapa nilainya $TERM? Jika tidak screen-256color, coba jalankan vimsebagai TERM=screen-256color vim, lalu pastikan tidak ada skrip startup TERM(atau, jika Anda perlu melakukannya untuk mengatasi perangkat lunak buggy, pastikan itu memeriksa nilai aslinya terlebih dahulu).
Ry-
@minitech: Bingo. Saya memiliki xterm-256color sedangkan layar-256color memperbaiki masalah. Jika Anda menjawab ini, saya akan menerimanya.
Thomas Browne
Ini bekerja untuk saya: stackoverflow.com/a/15095377/96855
Olivier Lalonde

Jawaban:

5

Ini terjadi ketika TERMtidak disetel ke yang benar screen[-256color]di lingkungan Vim, biasanya oleh beberapa skrip startup shell. Jika demikian - misalnya, Anda memiliki

TERM=xterm-256color

, hapus atau pastikan memeriksa nilai asli TERMsebelum mengubahnya, mis

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi
Ry-
sumber
8

di Anda .tmux.conf:

set -g default-terminal "screen-256color"
Wayne Walker
sumber
2

Komentar terlambat, tetapi saya telah memeriksa semua utas dan tidak dapat menyelesaikannya sampai saya melakukan yang berikut. Yang harus saya lakukan adalah menambahkan cek kedua

if [[ $TERM == screen]]; then
    TERM=screen-256color
fi

selain pernyataan kondisional pertama dalam .bashrcfile saya :

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

Saya juga punya ini di .tmux.conf:

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

Dalam .vimrcfile saya :

set term=screen-256color
PQL
sumber