Jak w skrócie działa podświetlanie składni:
W syntax/<filetype>.vimskładni reguły są definiowane za pomocą :syntaxpolecenia. To polecenie definiuje składnię. Mówi „jeśli tekst pasuje do tego wyrażenia regularnego, jest łańcuchem” i tak dalej. W tym celu przypisuje grupę wyróżnień . To nie nie mówią nic na temat kolorów jako takich.
:highlightmówi „podkreśl tę grupę za pomocą tych kolorów”. Odbywa się to w schemacie kolorów , a nie w pliku składni. Istnieje kilka standardowych grup świecące ( String, Function, Special, i tak dalej), które wszystkie systemy kolor powinien zdefiniować.
W żadnym wypadku nie jesteś ograniczony do tych grup domyślnych i możesz utworzyć tyle grup, ile chcesz (ale domyślnie pliki składni zwykle nie).
indent/<filetype>.vimPlik kontroluje automatyczne wcięcia. Na przykład dla Ruby jest napisane: „linia po defpowinna zwiększyć poziom wcięcia” i „linia po endpowinna zmniejszyć wcięcie o jeden poziom”. Nie robi nic z kolorami ani podświetlaniem składni.
Dlaczego różne języki programowania są wyróżniane? Częściowo z powodu osobistej estetyki i opinii tego, kto to napisał. Na przykład w Ruby Typegrupa wyróżnień jest używana do nazw klas. Ale mogło to być Functionlub coś innego. Dlaczego jest to Type? Prawdopodobnie dlatego, że autor pomyślał, że lepiej wygląda w swojej kolorystyce.
Co ważniejsze, języki mają różną semantykę i wrażliwość. W Ruby selfjest specjalnym słowem kluczowym. Nie możesz zrobić self = "foo"lub def self(). To są błędy. Ale to nie przypadek w Pythonie. To po prostu inna zmienna bez żadnych specjalnych właściwości. Robić:
x = Object()
x.foo()
jest naprawdę „przetłumaczony” przez Python na:
Object.foo(x)
Nazwa selfjest tylko konwencją (prawie powszechnie przyjętą), ale możesz nazwać ją jak tylko chcesz; def x(this):lub def x(xxx):są równie ważne. Możesz także użyć nazwy w selfdowolnym miejscu; self = 'foo'i def self():są całkowicie w porządku.
Twierdziłbym, że selfnie należy go wyróżniać, ponieważ nie jest to ani specjalne słowo kluczowe, ani predefiniowana zmienna (jak str). W selfpliku składni nie ma śladu tego słowa , więc wygląda na to, że autor tego rozumował tak samo :-)
Jeśli chcesz selfwyróżnić, musisz utworzyć dla niego regułę składni:
:syn keyword pythonBuiltin self
Nazwa pythonBuiltingrupy jest już zdefiniowana w domyślnym pliku składni i połączona z Functiongrupą wyróżnień. Aby użyć nowej grupy wyróżnień, użyj czegoś takiego:
:syn keyword pythonSelf self
:highlight def link pythonSelf Special
Aby wprowadzić te zmiany, nie możesz ich po prostu włożyć do pliku vimrc. Plik składni zastąpi go. Zamiast tego musisz uruchomić go po załadowaniu pliku składni, co możesz zrobić na dwa sposoby:
Użyj FileTypeautocmd:
augroup python
autocmd!
autocmd FileType python
\ syn keyword pythonSelf self
\ | highlight def link pythonSelf Special
augroup end
Użyj after-directory, ~/.vim/after/syntax/python.vim:
syn keyword pythonSelf self
highlight def link pythonSelf Special
Obie metody są faktycznie takie same. Użyj tego, co wolisz.