Saya tidak menempatkan color xxx
di saya .vimrc
. Jadi saya melihat ini ketika saya pertama kali membuka .vimrc
.
:color
berikan saya di default
sini.
Lalu aku mengetik :color darcula
. Dan itu berubah menjadi ini.
:color
memberi saya di darcula
sini (secara alami).
Lalu aku mengetik :set background=dark
. Dan itu berubah menjadi ini.
:color
memberi saya di default
sini (luar biasa).
Jadi pertanyaan saya adalah, apa sebenarnya yang :set background=dark
harus dilakukan?
Saya mencoba :h background
dan tidak menemukan sesuatu yang bermanfaat. Saya mengerti bahwa perintah ini tidak benar-benar mengubah latar belakang, hanya vim yang akan mengubah warna yang sesuai. Tetapi saya masih ingin menanyakan pertanyaan ini. Karena saya sangat senang dengan warna setelahnya :color darcula
dan :set background=dark
jadi saya bertanya-tanya bagaimana menulis skema warna saya sendiri tanpa harus memasukkan ke set background=dark
dalam warna saya .vimrc
.
Saya mengambil saran dari @statox dan meletakkan set background=dark
di baris terakhir dari saya darcula.vim
. Lalu color darcula
beri saya tangkapan layar ketiga. Namun ketika saya meletakkannya di baris pertama, color darcula
beri saya tangkapan layar kedua. Juga set bg=dark
mengubahnya ke tangkapan layar ketiga.
Saya berasumsi dengan meletakkannya di baris pertama, saya mengatakan kepada vim bahwa skema warna ini dirancang untuk latar belakang yang gelap. Dengan meletakkannya di baris terakhir, pada kontras, saya membiarkan vim berasumsi bahwa skema warna ini dirancang untuk latar belakang yang terang dan kemudian membuat vim mengubahnya beberapa dengan sendirinya (ketika memproses baris terakhir).
Jika apa yang saya asumsikan terjadi adalah benar, pertanyaan saya masih belum terjawab. Apa sebenarnya yang berubah vim, ketika saya menggunakan set bg=dark
SETELAH itu telah memuat skema warna yang terang?
Seluruh konfigurasi vim saya tersedia di https://github.com/MichaelMa2014/.vim
sumber
:set bg=light
dan:set bg=dark
tidak berlawanan, tetapi apa sebenarnya mereka tidak dijelaskan. Juga posting itu sebabnya saya ingin menghindari:set background=dark
di blog saya.vimrc
.Jawaban:
Apa yang terjadi ketika kamu
:set background
Mekanisme dasar yang
:set background
digunakan sebenarnya cukup sederhana, dan didokumentasikan (walaupun tidak terlalu jelas) di:help 'background'
.Jadi apa yang sebenarnya terjadi ketika
'background'
opsi diubah adalah ini:Jika tidak ada skema warna saat ini dimuat
Vim memuat ulang warna default, menggunakan warna foreground yang dianggap sesuai untuk pengaturan baru
'background'
Jika skema warna saat ini dimuat
Vim memuat ulang skema warna. Saat skema warna dimuat, skema warna akan menetapkan warna yang sesuai dengan pengaturan baru
'background'
, atau skema warna akan diatur ulang'background'
ke nilai lama.Seperti yang telah Anda jelaskan,
'background'
opsi ini tidak dimaksudkan untuk mengatur latar belakang, tetapi untuk memberi tahu Vim apakah latar belakangnya gelap atau terang.Jadi jika skema warna ulang
'background'
, Vim menganggap ini berarti skema warna tidak mendukung pengaturan baru'background'
. Karena pengguna telah mengindikasikan mereka menggunakan latar belakang seperti ini, ini berarti bahwa skema warna saat ini tidak lagi sesuai, dan karenanya Vim tidak disetelg:colors_name
dan kemudian memuat ulang warna default.Jika Anda ingin menjelajahi kode aktual yang dijalankan saat
'background'
diatur, Anda bisa mulai di sini .Apa yang terjadi di instalasi Anda
Perilaku aneh yang Anda uraikan (dalam versi pertama dari pertanyaan Anda) dapat dijelaskan oleh baris ini dalam dokumentasi yang dikutip di atas:
Masalahnya adalah bahwa
colors/darcula.vim
file Anda tidak menetapkan nilai ini, dan meskipun warna berubah ketika Anda dipanggil:color darcula
, Vim tidak menganggap skema warna untuk saat ini dimuat.Karenanya, saat Anda menelepon
:set background=dark
Vim, lakukan langkah di bagian "Jika tidak ada skema warna yang dimuat" di atas, dan tetapkan warna default untuk latar belakang gelap. Ini menjelaskan mengapa:color
kemudian dilaporkandefault
.(Namun, perhatikan bahwa pengaturan warna default tidak , seperti yang Anda harapkan, menghapus semua warna yang telah ditetapkan sebelumnya, dan inilah sebabnya Anda berakhir dengan hasil yang Anda lihat, bukan warna yang ditampilkan saat Anda mulai Vim di tempat pertama. Ada beberapa diskusi tentang masalah ini di sini )
Singkatnya, skema warna Anda salah konfigurasi: Lihat
:edit $VIMRUNTIME/colors/README.txt
(khususnya bagian di bagian bawah) untuk detail lebih lanjut tentang ini, dan tentang interaksi antara'background'
dan skema warna.sumber
Doc di
:h 'background'
harus memberikan semua informasi yang Anda butuhkan:Skema warna Anda menentukan 2 kelompok warna: yang digunakan pada latar belakang terang dan yang digunakan pada latar belakang gelap. The
background
pilihan akan memberitahu vim yang kelompok warna yang didefinisikan oleh colorscheme Anda harus digunakan.Itulah tindak lanjut dari paragraf sebelumnya: Ini adalah skema warna yang mendefinisikan kelompok warna dan
background
memilih salah satu dari kelompok ini.Akhirnya jika Anda ingin menulis skema warna Anda sendiri tanpa harus memasukkan
set background=dark
vimrc Anda, ingatlah bahwa colorscheme tidak lebih dari sebuah program dalam vimscript, jadi tidak ada yang menghentikan Anda dari menggunakan perintah secara langsung dalam kode colorcheme Anda seperti misalnya jellybeans atau magangsumber
set background=dark
didarcula.vim
dan menghasilkan efek yang sama seperti ketika saya memasukkannya ke dalam.vimrc
. Tapi saya masih penasaran, bagaimana tepatnya Vim "mencoba menggunakan warna yang terlihat bagus di latar belakang yang gelap"? Apakah ada pemetaan atau sesuatu seperti itu yang didefinisikan di suatu tempat?