Sözdizimi vurgulama kısaca nasıl çalışır:
Gelen syntax/<filetype>.vim
sözdizimi kuralları ile tanımlanır :syntax
komuta. 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
, Special
ve 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>.vim
Dosya otomatik girinti kontrol eder. Örneğin Ruby için "sonraki satır def
girinti seviyesini artırmalı" ve "sonraki satır end
girintiyi 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 Type
vurgulama grubu sınıf adları için kullanılır. Ama aynı zamanda Function
baş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ı self
sadece 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ı self
istediğ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 . self
Sözdizimi dosyasında kelimenin izi yok , bu yüzden yazarın aynı mantıkta olduğu anlaşılıyor :-)
İsterseniz self
vurgulanan bunun için bir sözdizimi kuralı oluşturmak gerekir:
:syn keyword pythonBuiltin self
pythonBuiltin
Grup adı zaten varsayılan sözdizimi dosyasında tanımlanmış ve bağlantılıdır Function
vurgulamak 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 FileType
autocmd 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.