Cara kerja penyorotan sintaks secara singkat:
Dalam syntax/<filetype>.vim
aturan sintaks didefinisikan dengan :syntax
perintah. Perintah ini mendefinisikan, baik, sintaks. Dikatakan "jika teks cocok dengan ekspresi reguler ini, ini adalah string", dan sebagainya. Untuk melakukannya, ia menetapkan grup sorotan . Itu tidak mengatakan apa-apa tentang warna seperti itu.
:highlight
mengatakan "sorot grup ini dengan warna-warna ini". Ini dilakukan dalam skema warna , bukan file sintaks. Ada sekelompok kelompok Highlight default ( String
, Function
, Special
, dan sebagainya) yang semua skema warna harus mendefinisikan.
Anda tidak dibatasi oleh grup-grup default ini, dan Anda dapat membuat grup sebanyak yang Anda inginkan (tetapi file sintaksis default biasanya tidak).
The indent/<filetype>.vim
File mengontrol lekukan otomatis. Sebagai contoh untuk Ruby dikatakan "baris setelah def
harus meningkatkan tingkat lekukan" dan "baris setelah end
harus mengurangi lekukan satu tingkat". Itu tidak melakukan apa pun dengan warna atau penyorotan sintaksis.
Mengapa bahasa pemrograman yang berbeda disorot berbeda? Sebagian karena estetika pribadi dan pendapat siapa pun yang menulisnya. Misalnya di Ruby, Type
grup sorotan digunakan untuk nama kelas. Tapi bisa juga itu Function
atau sesuatu yang lain. Kenapa begitu Type
? Mungkin karena penulis berpikir bahwa itu terlihat lebih baik dalam skema warnanya.
Tetapi yang lebih penting, bahasa memiliki semantik dan kepekaan yang berbeda. Di Ruby, self
adalah kata kunci khusus. Anda tidak dapat melakukan self = "foo"
atau def self()
. Ini adalah kesalahan. Tapi ini tidak terjadi dengan Python. Ini hanyalah variabel lain tanpa properti khusus. Perbuatan:
x = Object()
x.foo()
benar-benar "diterjemahkan" oleh Python ke:
Object.foo(x)
Namanya self
hanya konvensi (hampir diadopsi secara universal) tetapi Anda dapat menamainya sesuka Anda; def x(this):
atau def x(xxx):
sama-sama valid. Anda juga dapat menggunakan nama di self
mana saja Anda suka; self = 'foo'
dan def self():
baik-baik saja.
Saya berpendapat bahwa self
tidak boleh disorot, karena itu bukan kata kunci khusus, atau variabel yang ditentukan sebelumnya (seperti str
). Tidak ada jejak kata self
dalam file sintaks, jadi sepertinya penulisnya beralasan sama :-)
Jika Anda ingin self
disorot Anda harus membuat aturan sintaks untuk itu:
:syn keyword pythonBuiltin self
Nama pythonBuiltin
grup sudah ditentukan dalam file sintaks default dan ditautkan ke Function
grup highlight. Untuk menggunakan grup sorotan baru, gunakan sesuatu seperti:
:syn keyword pythonSelf self
:highlight def link pythonSelf Special
Untuk melakukan perubahan ini, Anda tidak bisa hanya menempelkannya di file vimrc Anda. File sintaks akan menimpanya. Sebagai gantinya, Anda harus menjalankannya setelah file sintaks dimuat, yang dapat Anda lakukan dengan dua cara:
Gunakan FileType
autocmd:
augroup python
autocmd!
autocmd FileType python
\ syn keyword pythonSelf self
\ | highlight def link pythonSelf Special
augroup end
Gunakan after-directory
, ~/.vim/after/syntax/python.vim
:
syn keyword pythonSelf self
highlight def link pythonSelf Special
Kedua metode secara efektif sama. Gunakan mana yang Anda inginkan.