tmux, Vim dan Solarized

19

Tempat

Menjelajahi tmux , Vim dan Solarized Saya dapat menemukan banyak keluhan tentang 256 warna dan "pengalaman pengguna". Nah, Saya mengalami kebalikan "masalah", yaitu Vim bekerja dengan baik dengan penuh Solarized tema hanya di tmux .

Latar Belakang

Saya telah mengubah dan mencari-cari sebentar sekarang dengan skema warna terminal Ubuntu dan Guake saya dan saya hampir mencapai kesempurnaan yang dicapai ketika saya menggunakan tmux , yang pada gilirannya berarti selalu. Saya mencoba sekarang untuk memahami mengapa ini terjadi.

Di sini di bawah ini ada dua Terminal, yang di sebelah kiri hanya menjalankan Vim (menunjukkan saat ini .vimrc) sedangkan yang lainnya menjalankan Vim di dalam sesi tmux . Seperti yang dapat Anda lihat dengan jelas, hanya dalam sesi tmux fontnya tebal, yang saya kira benar (atau tidak?).

masukkan deskripsi gambar di sini

Pertanyaan

Mengapa tmux memungkinkan untuk huruf tebal sedangkan terminal, di mana tmux berjalan, tidak? Apakah itu bug atau fitur?

Atcold
sumber
Apa output echo $TERMmasuk dan keluar tmux?
jasonwryan
tmux mengatakan screensedangkan terminal berkata xterm:)
Atcold
@jasonwryan membaca pertanyaan OP lainnya di sini dan jawaban Gilles untuk pertanyaan serupa di sini . Tampaknya $TERMtidak relevan.
terdon
@terdon itu material dalam kasus ini: tmux mensyaratkan bahwa istilah diatur ke layar (atau varian) dan xterm, secara default, adalah istilah 8 warna. Itu sebabnya OP melihat perbedaannya.
jasonwryan
Masukkan xterm*termName: xterm-256colorAnda ~/.Xresourcesdan lihat apakah itu membuat perbedaan ...
jasonwryan

Jawaban:

22

Jawaban singkat

Itu bug.

Jawaban penuh

Sepertinya "benar" visualisasi adalah satu di kiri, di mana huruf tebal yang tidak diberikan. Untuk apa yang saya bisa mengerti ( inilah rujukannya) atribut bold digunakan, awalnya, untuk mengatur versi yang disorot dari 8 warna dasar.

Secara historis, telah ada korespondensi satu-ke-satu antara versi tebal dari 8 warna ANSI default dan versi cerah dari 8 warna default. Kembali pada hari itu, ketika sebuah program warna menuntut tampilan teks tebal, itu mungkin hanya lebih mudah bagi emulator terminal untuk menampilkan versi yang lebih terang dari warna apa pun teks itu (dan mengharapkan pengguna untuk menafsirkannya sebagai huruf tebal) daripada menampilkan jenis huruf dengan bobot tebal.

Pada dasarnya, apa yang terjadi di sini adalah bahwa, untuk menggunakan palet Solarized penuh , dengan oranye , ungu dan semua tingkat abu - abu , warna-warna tersebut disebut dengan atribut berani , yang pada gilirannya mengacu pada 8 warna alternatif dari Palet ANSI.

Terminal memahami ini dengan benar, dan menunjukkan oranye dan abu-abu komentar dalam pengaturan huruf normal , sedangkan tmux menambahkan font tebal yang tidak perlu ke mereka. Kesimpulannya, sisi kiri benar sedangkan yang kanan tidak.

Pertanyaan 2

Apakah ada cara untuk menonaktifkan rendering yang berani dari tmux ?
Saya masih harus melakukan riset tentang hal itu, dan saya akan memperbarui jawaban ini segera setelah saya menemukan sesuatu.

Jawaban 2

Dan di sini kita punya solusinya! :)

Agar tmux berperilaku benar, kita harus menyebutnya memberitahunya bahwa kita berada dalam lingkungan 256 warna yang diaktifkan.

TERM=xterm-256color /usr/bin/tmux

Untuk kenyamanan kami dapat melakukan aliasini (yaitu Anda menambahkan alias tmux="<the line above>"ke Anda ~/.bashrc).

tmux menafsirkan dengan benar warna "cetak tebal" yang tidak berani

Memanggil tmuxsebagai tmux -2, untuk memaksa tmux berjalan dengan dukungan 256 warna (alih-alih mendefinisikan ulang TERMvariabel lingkungan) tidak akan memungkinkan interpretasi yang benar dari 8 warna "alternatif-berani" (yaitu varian yang lebih cerah juga akan menghasilkan pengaturan huruf yang tebal). Oleh karena itu, saya sangat menyarankan untuk menggunakan solusi di sini di atas untuk memiliki kedua yang benar 256 warna interpretasi dan non-bold "berani-alternatif" warna.

Atcold
sumber
banyak cinta pria !!
shxfee