Sözdizimi vurgulama kısaca nasıl çalışır:
Gelen syntax/<filetype>.vimsözdizimi kuralları ile tanımlanır :syntaxkomuta. Bu komut sözdizimini tanımlar. "Metin bu normal ifadeyle eşleşiyorsa, bir dizedir" der ve böyle devam eder. Bunu yapmak için bir vurgu grubu atar . O mu değil gibi renkler hakkında bir şey söylemek.
:highlight"bu grubu bu renklerle vurgula" diyor. Bu, sözdizimi dosyasında değil renk şemasında yapılır . Varsayılan Vurgu gruplarının bir grup vardır ( String, Function, Specialve benzeri) tüm renk şemaları tanımlamak gerekir ki.
Yine de bu varsayılan gruplarla sınırlı değilsiniz ve istediğiniz kadar grup oluşturabilirsiniz (ancak varsayılan sözdizimi dosyaları genellikle yoktur).
indent/<filetype>.vimDosya otomatik girinti kontrol eder. Örneğin Ruby için "sonraki satır defgirinti seviyesini artırmalı" ve "sonraki satır endgirintiyi bir düzey azaltmalıdır" diyor. Renkler veya sözdizimi vurgulama ile hiçbir şey yapmaz.
Farklı programlama dilleri neden farklı vurgulanır? Kısmen kişisel estetik ve onu yazan kişinin görüşleri nedeniyle. Örneğin Ruby'de Typevurgulama grubu sınıf adları için kullanılır. Ama aynı zamanda Functionbaşka bir şey de olabilirdi . Neden öyle Type? Muhtemelen yazar, renk şemasında daha iyi göründüğünü düşündüğü için.
Ancak daha da önemlisi, diller farklı anlambilim ve duyarlılıklara sahiptir. Ruby'de selfözel bir anahtar kelimedir. Yapamazsın self = "foo"ya def self(). Bunlar hatalar. Ancak Python'da durum böyle değil . Herhangi bir özel özelliği olmayan başka bir değişken. Yapma:
x = Object()
x.foo()
gerçekten Python tarafından:
Object.foo(x)
Adı selfsadece kongre (neredeyse evrensel olarak benimsenmiştir) ama istediğiniz her şeyi adlandırabilirsiniz; def x(this):veya def x(xxx):eşit derecede geçerlidir. Adı selfistediğiniz yerde de kullanabilirsiniz ; self = 'foo've def self():gayet iyi.
Ne selfözel bir anahtar kelime ne de önceden tanımlanmış bir değişken (gibi str) vurgulanması gerektiğini iddia ediyorum . selfSözdizimi dosyasında kelimenin izi yok , bu yüzden yazarın aynı mantıkta olduğu anlaşılıyor :-)
İsterseniz selfvurgulanan bunun için bir sözdizimi kuralı oluşturmak gerekir:
:syn keyword pythonBuiltin self
pythonBuiltinGrup adı zaten varsayılan sözdizimi dosyasında tanımlanmış ve bağlantılıdır Functionvurgulamak grubunda. Yeni bir vurgu grubu kullanmak için aşağıdakileri kullanın:
:syn keyword pythonSelf self
:highlight def link pythonSelf Special
Bu değişiklikleri yapmak için onları vimrc dosyanıza yapıştıramazsınız. Sözdizimi dosyası onu geçersiz kılar. Bunun yerine , sözdizimi dosyası yüklendikten sonra çalıştırmanız gerekir; bunu iki şekilde yapabilirsiniz:
Bir FileTypeautocmd kullanın :
augroup python
autocmd!
autocmd FileType python
\ syn keyword pythonSelf self
\ | highlight def link pythonSelf Special
augroup end
Kullan after-directory, ~/.vim/after/syntax/python.vim:
syn keyword pythonSelf self
highlight def link pythonSelf Special
Her iki yöntem de etkili bir şekilde aynıdır. Hangisini tercih ederseniz kullanın.