Jak w skrócie działa podświetlanie składni:
W syntax/<filetype>.vim
składni reguły są definiowane za pomocą :syntax
polecenia. 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.
:highlight
mó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>.vim
Plik kontroluje automatyczne wcięcia. Na przykład dla Ruby jest napisane: „linia po def
powinna zwiększyć poziom wcięcia” i „linia po end
powinna 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 Type
grupa wyróżnień jest używana do nazw klas. Ale mogło to być Function
lub 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 self
jest 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 self
jest 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 self
dowolnym miejscu; self = 'foo'
i def self():
są całkowicie w porządku.
Twierdziłbym, że self
nie należy go wyróżniać, ponieważ nie jest to ani specjalne słowo kluczowe, ani predefiniowana zmienna (jak str
). W self
pliku składni nie ma śladu tego słowa , więc wygląda na to, że autor tego rozumował tak samo :-)
Jeśli chcesz self
wyróżnić, musisz utworzyć dla niego regułę składni:
:syn keyword pythonBuiltin self
Nazwa pythonBuiltin
grupy jest już zdefiniowana w domyślnym pliku składni i połączona z Function
grupą 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 FileType
autocmd:
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.