Mendapatkan 256 warna untuk bekerja di tmux

177

Saya memiliki 256 warna yang berfungsi dengan baik konsole,. Saya pikir saya akan tmuxmencoba karena, tidak seperti layar, sepertinya mendukung vimode. Namun saya menemukan bahwa warna prompt saya muncul dan ini kemungkinan besar karena saya memiliki prompt mode 256 warna. Apa yang harus saya lakukan tmuxuntuk mengenali semua 256 warna?

xenoterracide
sumber
2
tmux -2Saya harus melakukan ini di terminator dan saya agak terkejut. The -2flag mengatakan tmux untuk memaksa penggunaan 256 warna ... apakah terminal Anda suka atau tidak ... dun dun dunnn: P
Dylan

Jawaban:

253

The Tmux FAQ eksplisit menyarankan terhadap pengaturan JANGKA untuk apa pun selain layar atau layar-256color dalam file init shell Anda, jadi jangan lakukan itu!

Inilah yang saya gunakan:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

dan di dalam .tmux.conf saya:

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

Mengasingkan tmuxke " tmux -2" juga harus melakukan trik.

kaleng kalengan
sumber
4
Saya suka cara mengaturnya di .tmux.conf terbaik ... menggunakan shell untuk mengaturnya sepertinya tidak benar
xenoterracide
6
Aneh. Anda tidak perlu tmux -2menggunakan OSX tetapi Anda membutuhkannya dengan Gnome Terminal. Terima kasih atas informasinya, ditambahkan ke alias saya!
FX
1
Di Kubuntu 13.10 pengaturan .tmux.conf saja tidak membuat saya 256 warna kembali (yang mengeluarkan penyorotan dalam mode visual vim) tetapi alias berhasil. Tentunya lebih memilih solusi file .tmux.conf saja.
Jacob Dalton
1
ssh'd ke mesin Ubuntu (dari OS X Terminal), terminal default .tmux.conf adalah yang saya butuhkan.
spidol duel
2
bagi saya sepertinya yang perlu saya lakukan adalah TERM=screen-256color tmuxtanpa membuat .tmux.conffile. Apakah saya melewatkan sesuatu?
joelostblom
39

Coba atur 256 warna secara eksplisit di bashrc atau zshrc Anda:

export TERM=xterm-256color

atau

export TERM=screen-256color

Jika Anda memiliki masalah dengan tmux tidak membersihkan warna latar belakang dengan benar saat menggunakan pengaturan istilah layar, Anda dapat mencoba:

export TERM=screen-256color-bce
dihapus
sumber
1
yang pertama adalah pengaturan TERM standar saya ... Saya baru mencoba yang 2 lainnya dan prompt saya masih tidak menunjukkan warna begitu saya masuk tmux. (Saya ingin mencatat bahwa tmux tidak menunjukkan warna di bagian bawah) ... sepertinya ketika saya masuk ke tmux bahwa ia mengatur ulang TERM ke TERM = layar ... mungkin ada cara untuk menimpa ini dalam konfigurasi?
xenoterracide
nvm ... Saya kira meletakkannya di rc shell saya tidak bekerja ... betapa menjengkelkannya bahwa mengabaikan variabel TERM env yang ditetapkan ketika saya menjalankan tmux ... Saya kira saya harus meletakkan kondisional di rc saya.
xenoterracide
1
-ce tidak kompatibel dengan tmux. Tmux tidak mendukung penghapusan warna latar belakang:
Dustin Kirkland
1
Saya punya masalah dengan roxterm. Semoga menambahkan roxterm ke ini akan membantu orang menemukan solusi yang sama yang saya miliki. Saya akan berakhir di vim dan memilih garis akan membuat mereka menghilang. Sangat sulit dicari. roxterm secara default diatur hanya dengan $ TERM = xterm, yang tidak baik.
BeepDog
5
-1, Anda tidak boleh mengatur tanpa syarat dalam file inisialisasi shell Anda. Mengaturnya untuk xterm-256colormengesampingkannya di dalam tmux juga, dan mengaturnya ke screen-256colorluar tmux dapat menyebabkan menampilkan bug.
nyuszika7h
19

Sesuai FAQ tmux , tambahkan ini ke ~/.tmux.conf:

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

Kemudian tambahkan alias ini untuk tmux:

alias tmux='tmux -2'

Tidak perlu mengganti TERMvariabel di profil Anda atau saat memulai tmux.

Informasi lebih lanjut: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim

pengguna1338062
sumber
2
Mengkonfigurasi tmux sudah cukup bagi saya; Saya tidak perlu mengatur alias (meskipun mungkin tidak ada salahnya).
anishpatel
Mengkonfigurasi tmux sendiri bekerja untuk saya. Alias ​​itu tidak cukup.
Harry Moreno
12

Versi terbaru dari ncurses dikirimkan dengan entri terminfo tmux-256color ( FAQ tidak menyebutkan ini). Sebagai contoh, manfaat menggunakan tmux-256color over screen-256color adalah italics ditampilkan dengan benar (layar tidak mendukung italics).

Jadi, jika Anda memiliki paket ncurses terbaru, berikut ini akan berfungsi juga:

set -g default-terminal "tmux-256color"
Gabriel Parent
sumber
Saya akan mencatat bahwa solusi ini tampaknya memerlukan tmux 2.6atau lebih baik
zzxyz
3

Catatan yang sangat penting di sini jika Anda menjalankan Ubuntu yang lebih tua dari Bionic (18.04). Jika Anda menjalankan tmux 2.1atau lebih tua, dan mungkin, pada dasarnya tidak ada saran yang Anda baca online tentang tmux akan bekerja .. untuk apa pun.

tmux -Vadalah ujian mudah untuk ini. Jika Anda melihat 2.1atau lebih lama, Anda dapat membangun tmux dari sumber, atau Anda dapat menambahkan repositori tidak resmi. Saya memperbarui tmux saya dengan:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Secara pribadi, setelah meningkatkan ke 2.6, 1) kunci saya bekerja lebih baik, 2) saran online benar-benar berfungsi, 3) warna saya tidak gila. Perbaikan besar.

(Berikut ini tautan ke halaman repositori, btw): https://launchpad.net/~hnakamur

zzxyz
sumber
2

Saya tidak bisa menjelaskan mengapa ini berhasil tetapi itu memecahkan masalah bagi saya.

~ / .tmux.conf

set-option -g default-command bash
John Snow
sumber
1
Saya mencoba ini sebagai pilihan terakhir dan ternyata berhasil!
v0d1ch
1

Ini solusi saya .... Saya mengedit file .bashrc saya dan menambahkan ini

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

Semoga itu bekerja di hatimu

Wira Bhakti
sumber
10
Kenapa repot-repot dengan if? Anda bisa mengatur variabel.
joeytwiddle