normal
popup
public
+ redir
return
set
setglobal
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Apr 03
+" Last Change: 2025 Apr 05
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
syn case match
" All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimRedir,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue
+" Redir: {{{2
+" =====
+syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
+syn match vimRedirBang contained "\a\@1<=!" skipwhite nextgroup=vimRedirFileOperator
+
+syn match vimRedirFileOperator contained ">>\=" skipwhite nextgroup=vimRedirFile
+syn region vimRedirFile contained
+ \ start="\S"
+ \ matchgroup=Normal
+ \ end="\s*$"
+ \ end="\s*\ze[|"]"
+ \ nextgroup=vimCmdSep,vimComment
+ \ contains=vimSpecFile
+syn match vimRedirRegisterOperator contained ">>\="
+syn match vimRedirRegister contained "@[a-zA-Z*+"]" nextgroup=vimRedirRegisterOperator
+syn match vimRedirVariableOperator contained "=>>\=" skipwhite nextgroup=vimVar
+syn keyword vimRedirEnd contained END
+
" Sleep: {{{2
" =====
syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
hi def link vimLetHereDoc vimString
hi def link vimLetHereDocStart Special
hi def link vimLetHereDocStop Special
- hi def link vimLetRegister Special
+ hi def link vimLetRegister vimRegister
hi def link vimLineComment vimComment
hi def link vimMapBang vimBang
hi def link vimMapLeader vimBracket
hi def link vimPlainMark vimMark
hi def link vimPlainRegister vimRegister
hi def link vimQuoteEscape vimEscape
+ hi def link vimRedir vimCommand
+ hi def link vimRedirBang vimBang
+ hi def link vimRedirFileOperator vimOper
+ hi def link vimRedirRegisterOperator vimOper
+ hi def link vimRedirVariableOperator vimOper
+ hi def link vimRedirEnd Special
+ hi def link vimRedirRegister vimRegister
hi def link vimRegister SpecialChar
hi def link vimScriptDelim Comment
hi def link vimSearch vimString
--- /dev/null
+>"+0#0000e05#ffffff0| |V|i|m| |:|r|e|d|i|r| |c|o|m@1|a|n|d| +0#0000000&@54
+@75
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&@1|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@57
+|r+0#af5f00255&|e|d|i|r|!| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@57
+|r+0#af5f00255&|e|d|i|r| +0#0000000&@1|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&@56
+|r+0#af5f00255&|e|d|i|r|!| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&@56
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&@1|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@56
+|r+0#af5f00255&|e|d|i|r|!| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@56
+|r+0#af5f00255&|e|d|i|r| +0#0000000&@1|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&@55
+|r+0#af5f00255&|e|d|i|r|!| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&@55
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
+@57|1|,|1| @10|T|o|p|
--- /dev/null
+|r+0#af5f00255#ffffff0|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
+@75
+>r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e|n|a|m|e| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@43
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|>+0#af5f00255&@1| +0#0000000&|f+0#e000002&|i|l|e| |n|a|m|e| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@43
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|a| +0#0000000&@66
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|A| +0#0000000&@66
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|a|>+0#af5f00255&| +0#0000000&@65
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|A|>+0#af5f00255&| +0#0000000&@65
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|a|>+0#af5f00255&@1| +0#0000000&@64
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|A|>+0#af5f00255&@1| +0#0000000&@64
+@75
+@57|1|9|,|1| @9|4|8|%|
--- /dev/null
+| +0&#ffffff0@74
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|*|>+0#af5f00255&| +0#0000000&@65
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|+|>+0#af5f00255&| +0#0000000&@65
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|*|>+0#af5f00255&@1| +0#0000000&@64
+>r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|+|>+0#af5f00255&@1| +0#0000000&@64
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|"|>+0#af5f00255&| +0#0000000&@65
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|@+0#e000e06&|"|>+0#af5f00255&@1| +0#0000000&@64
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@1|v+0#00e0e07&|a|r| +0#0000000&@61
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|=+0#af5f00255&|>@1| +0#0000000&|v+0#00e0e07&|a|r| +0#0000000&@61
+@75
+|r+0#af5f00255&|e|d|i|r| +0#0000000&|E+0#e000e06&|N|D| +0#0000000&@65
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|1| @9|B|o|t|
--- /dev/null
+highlight link vimVar Identifier
+highlight link vimRedirFile String
--- /dev/null
+" Vim :redir command
+
+
+redir > filename
+redir! > filename
+redir > file name
+redir! > file name
+
+redir >> filename
+redir! >> filename
+redir >> file name
+redir! >> file name
+
+redir > filename " comment
+redir > filename | echo "Foo"
+redir > file name " comment
+redir > file name | echo "Foo"
+
+redir >> filename " comment
+redir >> filename | echo "Foo"
+redir >> file name " comment
+redir >> file name | echo "Foo"
+
+redir @a
+redir @A
+
+redir @a>
+redir @A>
+
+redir @a>>
+redir @A>>
+
+redir @*>
+redir @+>
+
+redir @*>>
+redir @+>>
+
+redir @">
+redir @">>
+
+redir => var
+redir =>> var
+
+redir END
+
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Apr 03
+" Last Change: 2025 Apr 05
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
syn keyword vimCommand contained abo[veleft] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] conf[irm] nextgroup=vimBang
syn keyword vimCommand contained cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] defc[ompile] defe[r] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] em[enu] en[dif] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage] f[ile] files filet[ype] filt[er] fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep] helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] hor[izontal] ij[ump] il[ist] imp[ort] int[ro] ip[ut] is[earch] nextgroup=vimBang
syn keyword vimCommand contained isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove] ma[rk] mak[e] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] n[ext] nb[key] nextgroup=vimBang
-syn keyword vimCommand contained nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] nextgroup=vimBang
-syn keyword vimCommand contained sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] tj[ump] nextgroup=vimBang
-syn keyword vimCommand contained tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
+syn keyword vimCommand contained nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] nextgroup=vimBang
+syn keyword vimCommand contained sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] tj[ump] tl[ast] nextgroup=vimBang
+syn keyword vimCommand contained tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
" Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!"
syn case match
" All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimRedir,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue
+" Redir: {{{2
+" =====
+syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
+syn match vimRedirBang contained "\a\@1<=!" skipwhite nextgroup=vimRedirFileOperator
+
+syn match vimRedirFileOperator contained ">>\=" skipwhite nextgroup=vimRedirFile
+syn region vimRedirFile contained
+ \ start="\S"
+ \ matchgroup=Normal
+ \ end="\s*$"
+ \ end="\s*\ze[|"]"
+ \ nextgroup=vimCmdSep,vimComment
+ \ contains=vimSpecFile
+syn match vimRedirRegisterOperator contained ">>\="
+syn match vimRedirRegister contained "@[a-zA-Z*+"]" nextgroup=vimRedirRegisterOperator
+syn match vimRedirVariableOperator contained "=>>\=" skipwhite nextgroup=vimVar
+syn keyword vimRedirEnd contained END
+
" Sleep: {{{2
" =====
syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
hi def link vimLetHereDoc vimString
hi def link vimLetHereDocStart Special
hi def link vimLetHereDocStop Special
- hi def link vimLetRegister Special
+ hi def link vimLetRegister vimRegister
hi def link vimLineComment vimComment
hi def link vimMapBang vimBang
hi def link vimMapLeader vimBracket
hi def link vimPlainMark vimMark
hi def link vimPlainRegister vimRegister
hi def link vimQuoteEscape vimEscape
+ hi def link vimRedir vimCommand
+ hi def link vimRedirBang vimBang
+ hi def link vimRedirFileOperator vimOper
+ hi def link vimRedirRegisterOperator vimOper
+ hi def link vimRedirVariableOperator vimOper
+ hi def link vimRedirEnd Special
+ hi def link vimRedirRegister vimRegister
hi def link vimRegister SpecialChar
hi def link vimScriptDelim Comment
hi def link vimSearch vimString