Latar belakang Colorscheme tidak benar di terminal

13

Saya mengimpor colorcheme dan palet yang solarized. Terminal saya memiliki warna dan latar belakang yang benar, gvim memiliki warna dan latar belakang yang benar, tetapi vim memiliki latar belakang warna yang salah. Teks semuanya benar, tetapi latar belakangnya tampak hitam pekat.

Ini adalah perbandingan Terminal, GVim, dan Vim

Inilah .vimrc saya:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Jika ada yang punya saran tentang apa yang menyebabkan ini, saya akan sangat berterima kasih. Saya menjalankan xubuntu dengan terminal default.

Saya juga harus menyebutkan bahwa opsi lampu menghasilkan latar belakang yang sangat kuning untuk Vim.

Oberdiear
sumber
1
Dengan "[m] y terminal memiliki warna dan latar belakang yang benar," apakah Anda bermaksud mengatakan bahwa Anda mengikuti saran khusus tentang Vim di terminal?
Andrew
2
Saya memang mengikuti saran, @Andrew. Terima kasih.
Oberdiear
@Oberdiear Saran yang Andrew tautkan ke menjelaskan bahwa Anda harus mengatur terminal Anda untuk menggunakan warna-warna yang soliter, dan tidak menggunakan g:solarized_termcolors=256opsi. Jika Anda senang menggunakan warna soliter di terminal Anda, metode ini bekerja jauh lebih baik. Teks pertanyaan Anda menyiratkan bahwa Anda telah mengatur terminal Anda untuk menggunakan warna-warna yang dilarutkan (walaupun tangkapan layar yang Anda tampilkan tidak seperti saya), jadi dalam hal ini, mengapa Anda menggunakan g:solarized_termcolors=256pengaturan?
Kaya
Terminal apa yang Anda gunakan? Saya punya skrip ini untuk gnome-terminal.
wchargin
@ Rich, saya kira saya tidak mengatur palet dengan benar. Apakah Anda (atau orang lain) tahu cara mengaturnya dengan benar untuk Xfce Terminal?
Oberdiear

Jawaban:

10

Ada dua alasan mengapa saya pikir ini mungkin terjadi:

  1. Skema warna yang Anda gunakan tidak menyatakan ctermfgdan ctermbguntuk fitur apa pun yang ingin Anda sorot. Cobalah skema warna ini , pada dasarnya harus terlihat sama di dalam terminal dan gvim Anda, jika ini masalahnya maka Anda mungkin perlu melihat menggunakan skema warna yang menyatakan ctermfgdan ctermbg.

  2. Anda mungkin perlu memastikan emulator terminal Anda mendukung warna yang Anda coba tampilkan:


Perhatikan bahwa kedua hal ini dapat terjadi pada saat yang bersamaan, tetapi sulit untuk mendiagnosisnya tanpa informasi lebih lanjut tentang sistem Anda.

Pengembang El
sumber
The desert256 berfungsi dengan baik, tapi saya bukan penggemar berat. Saya yakin TERMvariabelnya tidak benar, tetapi saya tidak tahu bagaimana mengubahnya.
Oberdiear
2
Saya menginstal istilah ncurses. Saya kemudian menjalankan perintah. Setelah saya jalankan, semua teks menjadi abu-abu dan latar belakangnya hitam.
Oberdiear
1
Seharusnya export TERM=xterm+256color, BUKAN "warna s " (jamak). Juga, saya percaya itu harus xterm-256color, BUKAN "** + ** 256color; tapi saya mungkin salah khususnya tentang menggunakannya dengan solarized. Menurut jawaban ini ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward
export TERM=xterm+256colordi OSX saya dapatkanzle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross
Saya memiliki masalah ini dan export TERM=xterm+256colorsmembantu vim untuk mendeteksi dan menggunakan warna latar belakang yang tepat seperti yang dimiliki terminal saya.
Shyam Habarakada
5

Berita bagus, semuanya. @ Tom dan @ Rich mengatur saya di jalan yang benar. Saya menemukan solusi yang disediakan di sini . Saya mengatur .vimrc saya ke yang sederhana

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

Ini sepertinya memperbaiki semuanya. Warna-warnanya nampaknya tidak secerah dalam contoh font , tapi itu bisa saja saya. Bagi siapa saja yang ingin menggunakan colorcheme Solarized dan menggunakan xfce4-terminal, hanya mengubah terminalrc dan .vimrc sepertinya bisa menyelesaikan masalah utama saya. Terimakasih untuk semua orang atas bantuannya!

Oberdiear
sumber
1
Anda seharusnya tidak memerlukan set t_Cobaris di vimrc Anda: Vim dapat membaca nilai ini dari terminal (Pengaturan 't_Co'tampaknya sedikit kultus kargo Vim: banyak orang online merekomendasikan melakukannya tanpa benar-benar memahami masalah yang mereka coba selesaikan .)
Rich
Saya hanya akan mengatakan "layar" dan "tmux" - alat ini mengubah variabel $ TERM sehingga vim tidak dapat membaca informasi yang dibutuhkan.
NieDzejkob
@NieDzejkob Anda dapat menggunakan terminal multiplexer dan masih memiliki terminal yang dikonfigurasi dengan benar.
Kaya
@Rich apakah Anda keberatan menjelaskan apa yang benar diperbaiki di sisi terminal? Saya menggunakan tmux with $TERM=screendan setting t_Co=16memang memperbaiki masalah visual untuk saya, tapi saya ingin tahu apa hubungannya, pada awalnya.
ffledgling
Aku mencoba aku ingin. Mungkin perlu sedikit bolak-balik, jadi datanglah bergabung dengan saya dalam obrolan .
Kaya
4

Saya kira ini masalah kompatibilitas colorschemedengan terminal ini. Plugin csaproxsecara ajaib memecahkan banyak masalah ini.

Ringkasan:

Sulit untuk menemukan tema warna untuk terminal Vim. Sebagian besar skema warna ditulis hanya untuk mendukung GVim, dan tidak berfungsi sama sekali dalam terminal Vim.

Plugin ini membuat warna hanya tema GVim Hanya Bekerja di terminal Vim, selama terminal mendukung 88 atau 256 warna - dan sebagian besar melakukannya hari ini. Ini biasanya tidak memerlukan interaksi pengguna (tetapi lihat bantuan untuk apa yang harus dilakukan jika semuanya tidak berfungsi). Setelah mendapatkan plugin ini dengan senang hati diinstal, setiap kali Anda menggunakannya :colorschemeakan melakukan keajaiban dan membuat colorscheme Just Work.

Tautan ke plugin:

Jonatas Eduardo
sumber
1
Ini adalah plugin yang bermanfaat, tetapi tidak akan membantu di sini, karena skema warna yang sudah terlarut sudah berupaya keras untuk bekerja di terminal Vim di bawah terminal 16-warna dan 256-warna.
Kaya
4

Terminal-Vim colorscheme yang solarized dapat bekerja dalam satu dari dua cara berbeda.

  1. Mode 16-warna: Solarized hanya mengandung 16 warna, jadi dalam mode ini Anda mengatur terminal Anda untuk menggunakan warna-warna yang dilarutkan sebagai 16 warna, dan skema warna Vim hanya menggunakan ini. Jadi misalnya, skema warna Vim akan meminta warna terminal "1", dan terminal menampilkan ini sebagai warna hex # dc322f.

  2. Mode 256-warna, di mana ia memilih yang paling cocok untuk 16 warna dari palet 256-warna.

Metode sebelumnya sangat direkomendasikan oleh penulis (dan oleh saya), dan sepertinya Anda senang menggunakan metode ini karena Anda menyatakan bahwa "terminal Anda memiliki warna dan latar belakang yang benar".

Namun, tampak dari tangkapan layar Anda bahwa terminal Anda tidak memiliki warna yang benar. (Putih bukan warna pada set yang solarized, dan meskipun saya belum membuat eyedroppered, warna teks lain di screenshot tidak terlihat seperti Solarized "Violet" (# 6c71c4), juga.)

Jika Anda menghapus pengaturan garis t_Codan g:solarized_termcolorsdari vimrc * Anda, dan mengonfigurasi warna terminal Anda dengan benar, maka Anda harus menemukan bahwa skema warna 16-warna terlarut akan mulai bekerja.

* Garis-garis ini beralih untuk menggunakan mode 256-warna (kurang setia). Ini juga harus bekerja, (saya menduga bahwa @Jubal benar dalam menyarankan bahwa BCE adalah masalah di sini ), tetapi mode 16-warna lebih disukai kecuali jika Anda secara eksplisit tidak ingin menggunakan solarized di terminal Anda.

Kaya
sumber
Saya yakin Anda sepenuhnya berada di jalur yang benar. Saya pikir saya tidak menginstal palet dengan benar. Bisakah Anda memandu saya melalui prosesnya? Saya menghargai semua bantuan Anda, @Rich.
Oberdiear
1
Tampaknya tautan pertama Anda sudah mati.
akozi
@azoki Terima kasih telah memberi tahu saya. Sepertinya situs Solarized sedang dalam konstruksi (kembali). Saya mengubah tautan untuk menunjuk ke repo github untuk saat ini.
Kaya
3

Sepertinya Anda menemukan jawaban Anda. Saya memiliki masalah yang sama dan tidak ada yang berhasil. Apa yang berhasil bagi saya adalah menggunakan perselisihanterminalrc , sebagai lawan dari sgerrand .

Yang relevan dengan saya vimrchanyalah:

syntax enable
set background=dark
colorscheme solarized

Semoga itu bisa membantu seseorang!

ohsonice
sumber
1

Jadi inilah yang berfungsi untuk saya (pada semua terminal yang saya gunakan - xterm, konsole, gnome-terminal, iterm2, roxterm - di Linux dan OS X, juga dengan gvim dan macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif
Jubal
sumber
Ini menyebabkan masalah yang sama dengan pengaturan t_Co = 16. Saya cukup yakin saya punya masalah dengan palet, tapi saya belum mengetahuinya.
Oberdiear
Emulator terminal apa yang Anda gunakan? Jika saya ingat dengan benar, konfigurasi terlarut bawaan Konsole tidak sepenuhnya dapat digunakan dan seseorang perlu menggunakan pengaturan dari repositori solarized yang asli ...
Jubal
Saya menggunakan Terminal Xfce.
Oberdiear
Saya rasa saya berhasil: cobalah untuk memaksa TERM ke xterm-256color, saat menggunakan preset yang dilarutkan dari preferensi terminal, bukan dari repositori git xfce-terminal solarized. Ini bersama dengan hack BCE di atas melakukan trik untuk xfce4-terminal bagi saya.
Jubal
(Masih ada sesuatu yang mencurigakan dengan emulasi terminal dan rendering font yang mendasarinya , dan saya kira saya teringat mengapa saya kembali ke xterm lama yang sederhana di Linux…)
Jubal
0

Ini menyusahkan untuk bekerja (saya menggunakan terminal Vim di Linux Mint), dan sayangnya saya tidak menuliskan secara spesifik semua yang saya lakukan. Inilah bagian yang relevan dari vimrc saya:

syntax enable
set background=dark
set t_Co=16
colo solarized

Mungkin juga ada baiknya memeriksa proyek ini di GitHub .

Tom
sumber
set t_Co = 16 menyebabkan warna berbeda secara radikal dari yang diharapkan. Saya juga menggunakan terminal Xubuntu default adalah Xfce-Terminal.
Oberdiear
@Odidiear Jika pengaturan t_Co = 16 memengaruhi warna dengan cara itu (dengan variabel g: solarized_termcolors tidak disetel) maka itu berarti bahwa warna terminal Anda tidak diatur dengan benar untuk menggunakan solarized. Bagaimana Anda mengatur warna terminal Anda?
Kaya
0

Apa yang berhasil bagi saya adalah menghapus bagian ini dari pengaturan Anda

if has('gui_running')
   set background=dark
else
   set background=dark
endif

Saya menjalankan terminal xfce4

nisennenmondai
sumber
0

Saya punya masalah ini juga dengan xfce-terminal.

Setelah sedikit riset, saya menemukan bug ini : apa pun yang Anda atur $TERMdi terminal XFCE Anda diabaikan tanpa suara.

Saya pikir ini benar-benar bug dari pustaka VTE lama yang mendasari (dan tidak dirawat) yang digunakan terminal XFCE (masih berbasis GTK + 2). Beralih ke terminal GTK + 3, yang secara implisit menggunakan pustaka VTE baru , menyelesaikan masalah.

ntd
sumber