Ne yapar: set background = karanlık mı?


35

Ben içine color xxxkoymadım .vimrc. Bunu ilk açtığımda bunu görüyorum .vimrc.

:colorbeni defaultburada verir . Her şeyden önce

Sonra yazıyorum :color darcula. Ve buna dönüşür.

:colorbeni darculaburada (doğal olarak) veriyor . Renk düzenini değiştir

Sonra yazıyorum :set background=dark. Ve buna dönüşür.

:colorbana defaultburada (şaşırtıcı şekilde) verir . Arka planı değiştir

Öyleyse sorum şu, tam olarak ne :set background=darkişe yarıyor?

Denedim :h backgroundve yararlı bir şey bulamadım. Anlıyorum ki bu komut aslında arka planı değiştirmiyor, sadece vim de renkleri değiştirecek. Ama yine de bu soruyu sormak istiyorum. Ben renk ile gerçekten mutlu olduğum için sonra :color darculave :set background=darkben koymak zorunda kalmadan kendi renk düzeni nasıl yazılacağını merak yüzden set background=darkskinTenimde .vimrc.

@Stotox dan tavsiye aldım ve set background=darkson satırına koydum darcula.vim. Sonra color darculabana üçüncü ekran görüntüsünü verir. Ancak ilk satıra koyduğumda color darculabana ikinci ekran görüntüsünü veriyor. Ayrıca set bg=darküçüncü ekran görüntüsüne değiştirir.

İlk satırına koyarak, bu renk şemasının karanlık bir arka plan için tasarlandığını vim'e söylüyorum. Son çizgiye koyarak, aksine, vim'in bu renk şemasının açık renkli bir arka plan için tasarlandığını varsaymasına izin verdim ve sonra vim'in bir kısmını kendi başına (son çizgiyi işlerken) değiştirmesini sağladım.

Eğer varsaydıklarım doğruysa, sorum hala cevapsız. Tam olarak ne vim değişti, kullandığımda set bg=darkhafif bir renk şeması yükledikten SONRA?

Tüm vim yapılandırmamı https://github.com/MichaelMa2014/.vim adresinde bulabilirsiniz.



@muru Selamlar! Benimkini sormadan önce bu soruyu okudum. Bu yazıda zıt olan :set bg=lightve :set bg=darkzıt olmayan, ancak tam olarak ne oldukları açıklanmadı. Ayrıca bu yazı benim neden bu yüzden önlemek :set background=darkistiyorum .vimrc.
Michael Ma,

Yanıtlar:


32

Ne zaman olursun :set background

Çalıştığı temel mekanizma :set backgroundaslında oldukça basittir ve belgelenmiştir (özellikle de açıkça belirtilmese de) :help 'background'.

'Arkaplan' ayarlandığında Vim, yeni değer için varsayılan renk gruplarını ayarlayacaktır. Ancak sözdizimi vurgulama için kullanılan renkler değişmez. g: colors_name
Bir renk şeması yüklendiğinde ("g: colors_name" değişkeni ayarlanır) 'background' ayarı renk şemasının yeniden yüklenmesine neden olur. Renk şeması 'arkaplan' değerine uyarlanırsa bu işe yarayacaktır. Bununla birlikte, eğer renk şeması 'arkaplan'ı' kendisi belirlerse etki geri alınabilir.

Öyleyse, 'background'seçenek değiştirildiğinde aslında olan şey şudur:

Şu anda renk şeması yüklenmemişse

Vim, yeni ayarlarına uygun görülen ön plan renklerini kullanarak varsayılan renkleri yeniden yükler. 'background'

Bir renk şeması şu anda yüklü ise

Vim, renk şemasını yeniden yükler. Renk şeması yüklendiğinde, renk şeması yeni ayarına uygun renkleri ayarlar 'background'veya renk şeması eski değere sıfırlar 'background' .

Daha önce de açıkladığınız gibi, 'background'seçenek arka planı belirleme amacında değildir , bunun yerine Vim'e arka planın koyu veya açık olduğunu bildirmek için tasarlanmıştır .

Böylece renk şeması yeniden başlarsa 'background', Vim bunu renk şemasının yeni ayarını desteklemediği anlamına gelir 'background'. Kullanıcı böyle bir arka plan kullandıklarını belirttiğinden, mevcut renk şemasının artık uygun olmadığı ve dolayısıyla Vim'in g:colors_namevarsayılan renkleri belirleyip yeniden yüklediği anlamına gelir .

Ne zaman çalıştığında asıl kod keşfetmek isterseniz 'background'ayarlanır, burada başlayabilirsiniz .

Kurulumunuzda neler oluyor

Tarif ettiğiniz tuhaf davranış (sorunuzun ilk versiyonunda), yukarıda verilen belgelerde bu satırda açıklanabilir:

Bir renk şeması yüklendiğinde ("g: colors_name" değişkeni ayarlanır)

Sorun şu ki, colors/darcula.vimdosyanız bu değeri ayarlamıyor ve çağrıldığında renkler değişse bile :color darcula, Vim şu anda yüklenecek bir renk şeması düşünmüyor.

Bu nedenle, :set background=darkVim'i aradığınızda yukarıdaki "Şu anda hiçbir renk şeması yüklü değilse" bölümündeki adımı uygular ve koyu bir arka plan için varsayılan renkleri ayarlar. Bu neden :colorrapor ettiğini açıklar default.

(Ancak, varsayılan renkleri ayarlayarak yapar değil , tahmin edebileceğiniz gibi, daha önce ayarlanmış olmuştu tüm renkleri kaldırmak ve yerine görüntülenen renklerin yerine, bkz sonuçlar sonunda bu yüzden sizi ilk başta Vim'i başlatın. Bu konuyla ilgili bazı tartışmalar burada var )

Kısacası, renk şemanız yanlış yapılandırılmıştır: :edit $VIMRUNTIME/colors/README.txtBu konuda 'background've renk şemaları arasındaki etkileşimle ilgili daha fazla ayrıntı için bkz. (Özellikle alttaki bölüm) .


Çok teşekkür ederim! "Beklediğiniz gibi önceden ayarlanmış tüm renkleri kaldırma" demediğinizde tamamen anladığımı hissediyorum. Kesinlikle gidip tartışmaları okuyacağım!
Michael Ma,

4

Doktora, :h 'background' ihtiyacınız olan tüm bilgileri sağlamalıdır:

"Koyu" olarak ayarlandığında, Vim koyu arka plan üzerinde iyi görünen renkleri kullanmaya çalışır. "Açık" olarak ayarlandığında, Vim hafif bir arka plan üzerinde iyi görünen renkleri kullanmaya çalışır. Başka herhangi bir değer yasaktır.

Renk düzeniniz 2 renk grubunu tanımlar: açık bir fonda kullanılanlar ve koyu bir fonda kullanılanlar. Bu backgroundseçenek vim'e, colorcheme'iniz tarafından tanımlanan hangi renk grubunun kullanılması gerektiğini söyleyecektir.

Bu seçeneğin ayarlanması arka plan rengini değiştirmez, Vim'e arka plan renginin nasıl göründüğünü gösterir. Arka plan rengini değiştirmek için bkz :h :hi-normal.

'Arkaplan' ayarlandığında Vim, yeni değer için varsayılan renk gruplarını ayarlayacaktır. Ancak sözdizimi vurgulama için kullanılan renkler değişmez.

Bir önceki paragrafın izlemesi şu: Renk gruplarını tanımlayan ve backgroundbu gruplardan birini seçen renk şeması .

Son olarak set background=dark, vimrc'nizi koymak zorunda kalmadan kendi renk düzeninizi yazmak istiyorsanız, bir renk düzeninin vimscript'te bir programdan başka bir şey olmadığını unutmayın; bu nedenle hiçbir şey, örneğin doğrudan jöle veya Çırak


1
Teşekkür ederim! Ben koymak set background=darkiçinde darcula.vimve ben koydum zaman aynı etkiyi üretti .vimrc. Fakat hala merak ediyorum, Vim “karanlık bir arka plan üzerinde iyi görünen renkleri kullanmaya çalışıyor”? Bir yerde tanımlanmış bir eşleme veya benzeri bir şey var mı?
Michael Ma,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.