Vim/Sintaksė
Nors Vimas palaiko labai daug tekstinių failų formatų kartais vistiek gali prireikti parašyti savo sintaksės failą. Gali būti, kad paprastą sintaksę jūs sugalvojote patys ir jums norisi ją turėti Vime. Labai daug informacijos apie Vimo sintaksę galima rasti surinkus komandą:
:help syntax
O štai čia paprastas sintaksės failo pavyzdys. Tarkime jūs rašotės užduotis į paprastą tekstinį failą (TODO). Nepadarytas užduotis žymite minusu, padarytas - pliusu, abejotinas - klaustuku. Taigi skirtingos būsenos užduotis norite pažymėti skirtinga spalva. Taip pat norite, kad tekstas, kuris nėra pažymėtas kaip užduotis (pliusu, minusu arba klaustuku) ir nėra atitrauktas nuo krašto būtų pažymėtas kaip antraštė. Pvz.:
VIM knyga
+ Instaliavimas
+ Konfigūracija
- Sintaksė
Kita
- Sujungti visus straipsnius apie buto pirkimą į vieną straipsnį
? Išsimiegoti
Jau nepamenu, kada normaliai miegojau
Taigi norime, kad mūsų TODO sąrašas atrodytų gražiai. Tam sukuriame tokį Vimo sintaksės failą:
" Vim syntax file
" Language: TODO
" Maintainer: Dalius Dobravolskas
"
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn match todoNotStarted "^\ *-.*$"
syn match todoFinished "^\ *+.*$"
syn match todoQuestion "^\ *?.*$"
syn match todoTitle "^[^-+?\ ].*$"
if version >= 508 || !exists("did_todo_syn_inits")
if version <= 508
let did_todo_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" The default methods for highlighting. Can be overridden later
hi TodoFinishedSyntax guifg=#008000 gui=bold
hi TodoNotStartedSyntax guifg=#FF0000
hi TodoQuestionSyntax guifg=#0000FF
hi TodoTitleSyntax gui=bold
HiLink todoNotStarted TodoNotStartedSyntax
HiLink todoFinished TodoFinishedSyntax
HiLink todoQuestion TodoQuestionSyntax
HiLink todoTitle TodoTitleSyntax
delcommand HiLink
endif
let b:current_syntax = "todo"
Jį pavadiname todo.vim ir nukopijuojame į ~/.vim/syntax (gali tekti sukurti failą tokiu pavadinimu). Taip pat mes tikriausiai norėsime, kad ši sintaksė automatiškai būtų taikoma failams su plėtiniu todo (*.todo) arba tiems, kurie vadinasi todo.txt (čia jau jums improvizuoti). Tam reikia į .vimrc failą įdėti tokias eilutes:
au BufRead,BufNewFile *.todo set filetype=todo
au BufRead,BufNewFile todo.txt set filetype=todo
Štai taip aukščiau aprašytas failas atrodo mano kompiuteryje: