Vim dalam tmux menampilkan warna yang salah

57

Saya menginstal Ubuntu 11.10. Kemudian mengunduh tema Solarized untuk Gnome Terminal. Dari terminal vim saya terlihat bagus: plugin vim-powerline ditampilkan dengan benar dan sintaks disorot dengan warna yang tepat. Tetapi ketika saya menjalankan tmux dan menjalankan vim - highlight sintaks hanya menggunakan satu warna dasar dan vim-powerline tidak menampilkan warna. Saya melihat FAQ tentang vim-powerline dan solusinya adalah baris ini di .tmux-config:

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

Tapi itu tidak berhasil. Saya melihat TERM dan mengembalikan 'xterm' jadi saya mencoba:

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

Tapi ini juga tidak membantu.

Ini adalah satu-satunya baris dalam .tmux.config. Di .vimrc saya memiliki baris berikut:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized
dhuCerbin
sumber
Tidak tahu mengapa Anda tidak mendapatkan suara positif, bahkan dari mereka yang pasti mendapat manfaat dengan mendapatkan suara positif dari jawaban mereka sendiri. +1 dari saya. Pertanyaannya masuk akal dan membantu saya memecahkan masalah saya sendiri, dengan menemukannya.
0xC0000022L

Jawaban:

54

Memulai tmux dengan flag berikut memperbaiki ini untuk saya:

tmux -2

dari halaman manual tmux:

-2 Force tmux untuk menganggap terminal mendukung 256 warna.

Makarel Suci
sumber
1
Petunjuk yang bagus. Ketika versi layar Cygwin mulai crash vim saya beralih kembali ke tmux lagi dengan sangat cepat. Suka.
Hibah
1
FYI - Ini adalah satu-satunya hal yang bekerja untuk saya dengan tmux 2.3 dan powerline terbaru. Warna dalam bilah status vim dan tmux benar-benar aneh.
Plasty Grove
28

Saya mengalami masalah yang sama pada Ubuntu 10,04 LTS menggunakan Byobu 5.17 & tmux 1.5 menggunakan Solarized terbaru dari repo GitHub.

Saya dapat memperbaiki sebagian ini dengan menentukan $TERMdalam .bashrcfile:

export TERM="xterm-256color"

Tampaknya, juga, ada bug yang diajukan pada launchpad, tetapi belum terselesaikan: byobu tidak menampilkan warna dengan benar

Raminoid
sumber
2
Ini adalah satu-satunya hal yang berhasil untuk saya!
Tranquille
Juga bekerja di Ubuntu 14.04 dengan tmux 2.0
dukedave
Ini adalah solusi pada OS X juga haha
Jay
27

ini berhasil untuk saya

di .tmux.conf

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

di .vimrc

set term=screen-256color

hapus nilai istilah lama untuk .vimrc, percayalah ini akan berhasil

kiran ps
sumber
1
Tidak bekerja untuk saya. tmux 1.8, vim 7.4.1816, ubuntu x86_64 dengan kernel 3.13.0-92-generic. FYI.
fstang
1
Ini bekerja untuk saya tanpa pengaturan .vimrc, hanya .tmux.conf.
Geison Santos
Pengaturan .tmux.conf berhasil bagi saya!
hesselbom
4

Jenis terminal harus diatur ke layar-256color di ~ / .tmux.conf. Ia memberi tahu tmux apa yang harus disetel variabel lingkungan TERM, sehingga tidak akan berfungsi untuk sesi saat ini - mulailah yang baru dan ujilah.

Jika masih tidak berhasil, Anda dapat menjalankan Vim menggunakan:

TERM=screen-256color vi

Ini menetapkan variabel lingkungan hanya untuk satu kali eksekusi vi.

Jika itu tidak membuat vim menampilkan semua warna, uji apakah terminal Anda (saya tidak yakin jika Anda menguji hanya dengan satu emulator terminal) dikompilasi untuk mendukung 256 palet warna - unduh dan jalankan skrip Perl di bawah ini dari emulator terminal yang dimaksud.

http://scie.nti.st/dist/256colors2.pl

PS. Saya menganggap Anda sudah memperbaiki kesalahan ketik yang diperhatikan.

Marcin Kaminski
sumber
2

Seperti yang dijelaskan oleh Marcin Kaminski, jika TERM=screen-256color vim <filename> berhasil untuk Anda maka tambahkan saja ke.bashrc

TERM=screen-256color

dan mengikuti di Anda .tmux.conf:

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

Saya memiliki masalah yang sama, ini bekerja untuk saya.

pengguna3908054
sumber
Ini adalah satu-satunya yang bekerja untuk saya (tmux 1.8).
Yamaneko
Sebenarnya, saya baru saja menguji, dan hanya mengubah TERM=screen-256colorsudah cukup bagi saya, terlepas dari pengaturan tmux ke screen-256coloratau ke xterm-256color. Terima kasih!
Yamaneko
1

Ada salah ketik di baris terakhir Anda .vimrc.

Harus colorscheme solarized

Tidak yakin apakah itu membantu :)

jordanbrock
sumber
0

Anda mungkin memiliki masalah yang sama didokumentasikan dalam jawaban ini .

Pada dasarnya, pengaturan .tmux.conf berfungsi, dan TERMdiatur ke screen-256color, tetapi kemudian tmux membuka bash dan memanggil .bashrc Anda, yang disetel TERMke sesuatu yang lain (mungkin xterm-256color).

Solusinya adalah mengatur TERMdi pengaturan terminal Anda daripada di .bashrc. Jika itu bukan opsi, Anda dapat memeriksa TERMdi dalam .bashrc dan tidak mengubahnya jika sudah screen-256color.

jtpereyda
sumber
0

Di shell start tmux, periksa apakah $TERMada xterm-256coloratau screen-256color. Lihat cara mengubah $ TERM :

Sebagai alternatif, seperti dikatakan Holy Mackerel , Anda dapat memaksa tmux ke 256color melalui:

$ tmux -2
Wernight
sumber
0

[Solucion] [1] yang dapat mengganggu penglihatan Anda dan membuat Vim tidak menyenangkan untuk digunakan dalam waktu yang lama.

Anda dapat memperbaikinya dengan menjalankan: set term = screen-256color di Vim atau dengan meluncurkan kembali Vim di bawah TERM = screen-256color environment, karena beberapa ahli merekomendasikan: http://sunaku.github.io/vim-256color-bce.html

JEnriquePs
sumber
2
Apa yang Anda maksud dengan [Solucion] [1]? Apakah Anda mencoba merujuk atau menautkan ke jawaban lain? Jawaban tidak selalu muncul dalam urutan yang sama. Saya sarankan memperluas ini untuk mengklarifikasi apa yang Anda katakan dapat "mengganggu visi Anda dan membuat Vim tidak menyenangkan untuk digunakan dalam waktu yang lama."
Eliah Kagan
0

Di .bashrc atau .zshrc Anda cukup tambahkan

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

dan juga mulai dengan tmux -2

Talal
sumber
0

Bagi mereka, yang menghabiskan waktu pada warna, dan jika vim yang terlarut tidak bekerja pada tmux, atau lelah menemukan warna vim, ini akan bekerja dalam satu menit, juga dari repositori resmi sebagai berikut.

yum install vim-jellybeans

atau

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

ini akan memperbaikinya dengan kumpulan warna yang indah dan polanya sangat fokus dan berguna, jika Anda juga mencoba mengatur sorotan tersebut, cari kata-kata, ini dia. semuanya sudah diatur untuk digunakan. Anda bahkan dapat mengubah warna dalam file konfigurasi.

Jika Anda tidak ingin menginstal apa pun kecuali solusi cepat sederhana, abaikan di atas dan coba ini di vim

:colo ron Anda juga dapat mengganti 'ron' dengan set berikut dan bahkan mengembalikan ke solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

dan simpan di .vimrc

colo ron
syntax on
Seandex
sumber
Siapa pun yang memberi umpan balik negatif. biarkan saya mendengar alasan yang valid.
Seandex