routeros.vim (3362B)
1 " Vim syntax file 2 " Language: MikroTik RouterOS Script 3 " Maintainer: zainin <z@wintr.dev> 4 " Original Author: ndbjorne @ MikroTik forums 5 " Last Change: 2021 Nov 14 6 7 " quit when a syntax file was already loaded 8 if exists("b:current_syntax") 9 finish 10 endif 11 12 syn case ignore 13 14 syn iskeyword @,48-57,- 15 16 " comments 17 syn match routerosComment /^\s*\zs#.*/ 18 19 " options submenus: /interface ether1 etc 20 syn match routerosSubMenu "\([a-z]\)\@<!/[a-zA-Z0-9-]*" 21 22 " variables are matched by looking at strings ending with "=", e.g. var= 23 syn match routerosVariable "[a-zA-Z0-9-/]*\(=\)\@=" 24 syn match routerosVariable "$[a-zA-Z0-9-]*" 25 26 " colored for clarity 27 syn match routerosDelimiter "[,=]" 28 " match slash in CIDR notation (1.2.3.4/24, 2001:db8::/48, ::1/128) 29 syn match routerosDelimiter "\(\x\|:\)\@<=\/\(\d\)\@=" 30 " dash in IP ranges 31 syn match routerosDelimiter "\(\x\|:\)\@<=-\(\x\|:\)\@=" 32 33 " match service names after "set", like in original routeros syntax 34 syn match routerosService "\(set\)\@<=\s\(api-ssl\|api\|dns\|ftp\|http\|https\|pim\|ntp\|smb\|ssh\|telnet\|winbox\|www\|www-ssl\)" 35 36 " colors various interfaces 37 syn match routerosInterface "bridge\d\+\|ether\d\+\|wlan\d\+\|pppoe-\(out\|in\)\d\+" 38 39 syn keyword routerosBoolean yes no true false 40 41 syn keyword routerosConditional if 42 43 " operators 44 syn match routerosOperator " \zs[-+*<>=!~^&.,]\ze " 45 syn match routerosOperator "[<>!]=" 46 syn match routerosOperator "<<\|>>" 47 syn match routerosOperator "[+-]\d\@=" 48 49 syn keyword routerosOperator and or in 50 51 " commands 52 syn keyword routerosCommands beep delay put len typeof pick log time set find environment 53 syn keyword routerosCommands terminal error parse resolve toarray tobool toid toip toip6 54 syn keyword routerosCommands tonum tostr totime add remove enable disable where get print 55 syn keyword routerosCommands export edit find append as-value brief detail count-only file 56 syn keyword routerosCommands follow follow-only from interval terse value-list without-paging 57 syn keyword routerosCommands return 58 59 " variable types 60 syn keyword routerosType global local 61 62 " loop keywords 63 syn keyword routerosRepeat do while for foreach 64 65 syn match routerosSpecial "[():[\]{|}]" 66 67 syn match routerosLineContinuation "\\$" 68 69 syn match routerosEscape "\\["\\nrt$?_abfv]" contained display 70 syn match routerosEscape "\\\x\x" contained display 71 72 syn region routerosString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=routerosEscape,routerosLineContinuation 73 74 hi link routerosComment Comment 75 hi link routerosSubMenu Function 76 hi link routerosVariable Identifier 77 hi link routerosDelimiter Operator 78 hi link routerosEscape Special 79 hi link routerosService Type 80 hi link routerosInterface Type 81 hi link routerosBoolean Boolean 82 hi link routerosConditional Conditional 83 hi link routerosOperator Operator 84 hi link routerosCommands Operator 85 hi link routerosType Type 86 hi link routerosRepeat Repeat 87 hi link routerosSpecial Delimiter 88 hi link routerosString String 89 hi link routerosLineContinuation Special 90 91 let b:current_syntax = "routeros"