Bagaimana cara agar skema warna solarized bekerja dengan gnome-terminal, tmux dan vim?

25

Ada banyak pertanyaan di sekitar ini, tetapi itu karena ada begitu banyak variabel. Saya harus mengumpulkan instruksi dari banyak situs sebelum berhasil.

Pertama, saya tidak dapat dengan mudah mengatur 16 definisi warna solarized di gnome-terminal (saya melakukannya dengan tangan / mengklik hanya untuk menyadari bahwa saya tidak mendapatkan urutan / pemetaan yang benar). Setelah saya memperbaikinya saya pindah ...

Lalu saya telah solarisasi warna yang bekerja di vim OK-ish, tetapi ada beberapa latar belakang hitam aneh yang muncul dalam sorotan tertentu. Setelah saya memperbaikinya, saya pindah ...

Kemudian saya menyadari vim menjadi ay. Sekali berjalan di tmux. Ini diperdebatkan secara besar-besaran, tetapi sangat sedikit jawaban (yang sebagian besar mengatakan tentang pengaturan TERMuntuk xterm-256colors) bekerja untuk saya. Saya akhirnya memperbaikinya juga.

Solarized adalah palet yang sangat bagus (walaupun saya menggelapkan warna dasar yang paling gelap dan lebih terang karena saya lebih suka kontras yang lebih tinggi dan menemukan 'putih' tmux terlalu kuning pada layar terkalibrasi saya - mungkin baik pada layar laptop khas yang tidak dikalibrasi karena mereka ' biasanya terlalu biru!), jadi saya memposting pertanyaan ini dengan jawabannya untuk membagikan hasil pembelajaran saya.

artfulrobot
sumber
Saya menggunakan xterm-256color (bukan terminal GNOME), tmux, dan vim dan tidak ingat harus melompati banyak hal. Satu-satunya hal yang harus saya lakukan adalah solarisasi terminal (xterm menggunakan XResources, bukan profil) yang agak menyusahkan untuk mencari tahu, menambah solarized.vimdan saya siap.
jw013

Jawaban:

24

Solarized memberikan warna yang sangat spesifik. Anda tidak dapat benar-benar mencapai warna-warna ini dalam palet 256 warna standar . Satu-satunya cara Anda dapat mencapai ini adalah melalui pengaturan warna yang tepat di emulator terminal Anda, kemudian aplikasi berpikir mereka hanya menggunakan 16 warna standar (8 + 8 brights) tetapi ini telah dipetakan secara akurat ke palet Solarized.

Terminal Gnome tidak menyediakan cara yang sangat mudah untuk mengekspor / mengimpor palet atau profil, tetapi Anda dapat melakukannya dengan skrip bash ini:

#!/bin/sh
DARK_BG='#000014141A1A'
# original: DARK_BG='#00002B2B3636'
LIGHTEST='#FFFFFBFBF0F0'
# original: LIGHTEST='#FDFDF6F6E3E3'

gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_background" --type bool false
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_colors" --type bool false
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/palette" --type string "#070736364242:#D3D301010202:#858599990000:#B5B589890000:#26268B8BD2D2:#D3D336368282:#2A2AA1A19898:#EEEEE8E8D5D5:$DARK_BG:#CBCB4B4B1616:#58586E6E7575:#65657B7B8383:#838394949696:#6C6C7171C4C4:#9393A1A1A1A1:$LIGHTEST"
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "$DARK_BG"
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/foreground_color" --type string "#65657B7B8383"

Nb. di sini saya telah menimpa warna Solarized dan paling gelap. Anda dapat menggunakan aslinya jika suka, seperti yang dikomentari.

Cukup baik. Sekarang instal file warna vim Terpolarisasi dengan menempatkan file itu di ~.vim/colors/solarized.vim.

Sekarang Anda bisa memberi tahu Vim untuk menggunakan skema warna itu colo solarized. Tapi ini tidak cukup berhasil dan saya harus memberitahu Vim untuk menggunakan pallete 16 warna set t_Co=16,. Saya memasukkan keduanya ke dalam ~/.vimrcfile saya .

Sekarang warna vim bekerja, tetapi tidak jika itu berjalan di dalam tmux.

Bit selanjutnya ini sangat membingungkan. Kebanyakan saran mengatakan tentang pengaturan TERMtmux di luar xterm-256colors, tetapi ketika saya melakukan itu tmux bahkan tidak akan mulai. Itu juga membingungkan saya: tidakkah terlarut mengatakan bahwa palet 256 warna adalah perkiraan yang buruk? Yah, ini membingungkan, dan lagi pula, itu tidak berfungsi jadi saya perlu cara lain untuk maju:

Buat file yang /tmp/fooberisi:

xterm-16color|xterm with 16 colors,
    colors#16, use=xterm,

Kemudian instal ini dengan sudo tic /tmp/foo

Akhirnya, alias tmuxsebagai berikut:

alias tmux='TERMINFO=/usr/share/terminfo/x/xterm-16color TERM=xterm-16color tmux -2'

Sekarang saya mendapatkan persis warna yang tepat di terminal, di vim, dan dalam vim-dalam-tmux. Nb. yang -2pilihan memberitahu tmuxuntuk menggunakan palet 256 warna, yang benar-benar membingungkan karena variabel env akan muncul untuk memberitahu jika tidak ... Saya benar-benar tidak tahu, dan aku takut aku tidak benar-benar peduli untuk mendaki pembelajaran yang melengkung karena saya sekarang memiliki terminal berwarna indah yang Hanya Bekerja.

artfulrobot
sumber
set t_Co=16melakukan trik untukku. Sebelum mengatur bahwa opsi sintaks hightlighting tidak bekerja sama sekali.
Koraktor
2
Sangat lucu berapa banyak pekerjaan yang perlu Anda lakukan untuk mendapatkan 16 warna bekerja di editor teks!
Catatan: Saya menemukan bahwa di Gnome Terminal 3.18.3 (di Ubuntu 16.04) ini tidak lagi berfungsi - sepertinya tidak menerima warna dan menggunakan vim's t_Co = 256 memberikan hasil yang lebih baik.
artfulrobot
9

Saya juga menemukan proyek ini:

https://github.com/sigurdga/gnome-terminal-colors-solarized

Terima kasih atas tipsnya :-)

DavidG
sumber
1
Ya, ya dan ya! Gunakan skrip ini, jangan repot-repot dengan semua peretasan dalam jawaban yang diterima. Ini "hanya bekerja".
LondonRob
Hebat! Ini jauh lebih baik. Terima kasih.
wchargin
Pada beberapa instal berfungsi. Pada beberapa terlalu biru.
JohnMudd