Match full :debug, :breakadd, :breakdel and :breaklist commands.
closes: #18748
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
" Vim syntax file generator
" Language: Vim script
" Maintainer: Hirohito Higashi (h_east)
-" Last Change: 2025 Nov 13
+" Last Change: 2025 Nov 17
let s:keepcpo= &cpo
set cpo&vim
augroup
autocmd
behave
+ breakadd
+ breakdel
+ breaklist
browse
bufdo
call
confirm
const
copy
+ debug
debuggreedy
def
defer
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Nov 13
+" Last Change: 2025 Nov 17
" 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,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
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 vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
syn keyword vimBehaveModel contained mswin xterm
+" Break* commands {{{2
+" ===============
+syn keyword vimBreakaddFunc contained func skipwhite nextgroup=vimBreakpointFunctionLine,vimBreakpointFunction
+syn keyword vimBreakaddFile contained file skipwhite nextgroup=vimBreakpointFileLine,vimBreakpointFilename
+syn keyword vimBreakaddHere contained here skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn keyword vimBreakaddExpr contained expr skipwhite nextgroup=@vimExprList
+
+syn match vimBreakpointGlob contained "*" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointNumber contained "\<\d\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+
+syn cluster vimBreakpointArg contains=vimBreakaddFunc,vimBreakaddFile,vimBreakaddHere,vimBreakaddExpr
+
+syn match vimBreakpointFunction contained "\<\%(\*\|\w\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointFilename contained "\<\%(\*\|\f\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointFunctionLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFunction
+syn match vimBreakpointFileLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFilename
+
+syn keyword vimBreakadd breaka[dd] skipwhite nextgroup=@vimBreakpointArg
+syn keyword vimBreakdel breakd[el] skipwhite nextgroup=@vimBreakpointArg,vimBreakpointNumber,vimBreakpointGlob
+syn keyword vimBreaklist breakl[ist] skipwhite nextgroup=vimComment,vim9Comment,vimSep
+
" Call {{{2
" ====
syn match vimCall "\<call\=\>" skipwhite nextgroup=vimVar,@vimFunc
syn match vimCdBang contained "\a\@1<=!" skipwhite nextgroup=vimCdArg,vimComment,vim9Comment,vimCmdSep
+" Debug {{{2
+" =====
+syn keyword vimDebug deb[ug] skipwhite nextgroup=@vimCmdList
+
" Debuggreedy {{{2
" ===========
" TODO: special-cased until generalised range/count support is implemented
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
hi def link vimBracket Delimiter
+ hi def link vimBreakaddFunc Special
+ hi def link vimBreakaddFile Special
+ hi def link vimBreakaddHere Special
+ hi def link vimBreakaddExpr Special
+ hi def link vimBreakpointGlob Special
+ hi def link vimBreakadd vimCommand
+ hi def link vimBreakdel vimCommand
+ hi def link vimBreaklist vimCommand
hi def link vimCall vimCommand
hi def link vimCatch vimCommand
hi def link vimCd vimCommand
hi def link vimContinueString vimString
hi def link vimCount Number
hi def link vimCtrlChar SpecialChar
+ hi def link vimDebug vimCommand
hi def link vimDebuggreedy vimCommand
hi def link vimDef vimCommand
hi def link vimDefBang vimBang
--- /dev/null
+>"+0#0000e05#ffffff0| |V|i|m| |:|b|r|e|a|k|*| |c|o|m@1|a|n|d|s| +0#0000000&@52
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|B|r|e|a|k|p|o|i|n|t|N|u|m|b|e|r| |N|u|m|b|e|r| +0#0000000&@23
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|B|r|e|a|k|p|o|i|n|t|F|u|n|c|t|i|o|n|L|i|n|e| |N|u|m|b|e|r| +0#0000000&@17
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|B|r|e|a|k|p|o|i|n|t|F|i|l|e|L|i|n|e| |N|u|m|b|e|r| +0#0000000&@21
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|B|r|e|a|k|p|o|i|n|t|F|i|l|e|n|a|m|e| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@17
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|B|r|e|a|k|p|o|i|n|t|F|u|n|c|t|i|o|n| |T|y|p|e| +0#0000000&@23
+@75
+@75
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@57
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@54
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@53
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@50
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@61
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @55
+@75
+|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@65
+@75
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@64
+@57|1|,|1| @10|T|o|p|
--- /dev/null
+|b+0#af5f00255#ffffff0|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @55
+@75
+|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@65
+@75
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
+>b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@64
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@57
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@54
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@53
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@50
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@55
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@52
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@51
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@48
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@59
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @53
+@75
+@57|1|9|,|1| @9|1|7|%|
--- /dev/null
+| +0&#ffffff0@74
+@2|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@63
+@75
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@62
+@2>b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@55
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@52
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@51
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@48
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@55
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@52
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@51
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@48
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@59
+@2|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @53
+@75
+@57|3|7|,|3| @9|4|0|%|
--- /dev/null
+| +0&#ffffff0@74
+@2|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@63
+@75
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@62
+@2>b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@55
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@52
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@51
+@2|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@48
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@75
+|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| |a|n|d| |t|r|a|i|l|i|n|g| |b|a|r| +0#0000000&@43
+@75
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@7|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@4|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@3|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@11|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+@57|5@1|,|3| @9|6|4|%|
--- /dev/null
+|b+0#af5f00255#ffffff0|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@11|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @5|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+@75
+|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@15|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+@75
+>b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@13|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@14|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@7|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@4|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@3|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@40
+@75
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@7||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@3||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|h+0#e000e06&|e|r|e| +0#0000000&@11||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&|g+0#00e0e07&|:|f+0#0000000&|o@1| @5||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+@75
+@57|7|3|,|1| @9|8@1|%|
--- /dev/null
+| +0&#ffffff0@74
+|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@15||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+@75
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|4+0#e000002&|2| +0#0000000&@13||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|*+0#e000e06&| +0#0000000&@14||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+>b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@7||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|u|n|c| +0#0000000&|4+0#e000002&|2| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&@3||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&|f+0#e000e06&|i|l|e| +0#0000000&|4+0#e000002&|2| +0#0000000&|f+0#00e0e07&|o@1|.|t|x|t| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@37
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|1|,|1| @9|B|o|t|
--- /dev/null
+>"+0#0000e05#ffffff0| |V|i|m| |:|d|e|b|u|g| |c|o|m@1|a|n|d| +0#0000000&@54
+@75
+@75
+|d+0#af5f00255&|e|b|u|g| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@58
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+@2|d+0#af5f00255&|e|b|u|g| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@56
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
+@2|d+0#af5f00255&|e|b|u|g| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1|
--- /dev/null
+" Vim :break* commands
+" VIM_TEST_SETUP hi link vimBreakpointNumber Number
+" VIM_TEST_SETUP hi link vimBreakpointFunctionLine Number
+" VIM_TEST_SETUP hi link vimBreakpointFileLine Number
+" VIM_TEST_SETUP hi link vimBreakpointFilename Identifier
+" VIM_TEST_SETUP hi link vimBreakpointFunction Type
+
+
+breakadd func Foo
+breakadd func 42 Foo
+breakadd file foo.txt
+breakadd file 42 foo.txt
+breakadd here
+breakadd expr g:foo
+
+breaklist
+
+breakdel 42
+breakdel *
+breakdel func Foo
+breakdel func 42 Foo
+breakdel file foo.txt
+breakdel file 42 foo.txt
+
+function Foo()
+ breakadd func Foo
+ breakadd func 42 Foo
+ breakadd file foo.txt
+ breakadd file 42 foo.txt
+ breakadd here
+ breakadd expr g:foo
+
+ breaklist
+
+ breakdel 42
+ breakdel *
+ breakdel func Foo
+ breakdel func 42 Foo
+ breakdel file foo.txt
+ breakdel file 42 foo.txt
+endfunction
+
+def Vim9Context()
+ breakadd func Foo
+ breakadd func 42 Foo
+ breakadd file foo.txt
+ breakadd file 42 foo.txt
+ breakadd here
+ breakadd expr g:foo
+
+ breaklist
+
+ breakdel 42
+ breakdel *
+ breakdel func Foo
+ breakdel func 42 Foo
+ breakdel file foo.txt
+ breakdel file 42 foo.txt
+enddef
+
+
+" tail comment and trailing bar
+
+breakadd func Foo " comment
+breakadd func 42 Foo " comment
+breakadd file foo.txt " comment
+breakadd file 42 foo.txt " comment
+breakadd here " comment
+breakadd expr g:foo " comment
+
+breaklist " comment
+
+breakdel 42 " comment
+breakdel * " comment
+breakdel func Foo " comment
+breakdel func 42 Foo " comment
+breakdel file foo.txt " comment
+breakdel file 42 foo.txt " comment
+
+breakadd func Foo | echo "..."
+breakadd func 42 Foo | echo "..."
+breakadd file foo.txt | echo "..."
+breakadd file 42 foo.txt | echo "..."
+breakadd here | echo "..."
+breakadd expr g:foo | echo "..."
+
+breaklist | echo "..."
+
+breakdel 42 | echo "..."
+breakdel * | echo "..."
+breakdel func Foo | echo "..."
+breakdel func 42 Foo | echo "..."
+breakdel file foo.txt | echo "..."
+breakdel file 42 foo.txt | echo "..."
+
--- /dev/null
+" Vim :debug command
+
+
+debug echo "..."
+
+function Foo()
+ debug echo "..."
+endfunction
+
+def Bar()
+ debug echo "..."
+enddef
+
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Nov 13
+" Last Change: 2025 Nov 17
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
" regular vim commands {{{2
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
-syn keyword vimCommand contained al[l] ar[gs] arga[dd] argd[elete] argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] buffers bun[load] bw[ipeout] 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] ce[nter] cex[pr] cf[ile] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] col[der] colo[rscheme] comc[lear] comp[iler] con[tinue] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] delm[arks] deb[ug] defc[ompile] nextgroup=vimBang
-syn keyword vimCommand contained 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] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] his[tory] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] 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] lcl[ose] lcs[cope] le[ft] lex[pr] lf[ile] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lhi[story] ll lla[st] lli[st] lmak[e] nextgroup=vimBang
-syn keyword vimCommand contained lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] 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] sla[st] sn[ext] so[urce] 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] sync[bind] smi[le] t tN[ext] ta[g] tags tabc[lose] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs te[aroff] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] up[date] v[global] nextgroup=vimBang
-syn keyword vimCommand contained ve[rsion] vi[sual] vie[w] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winp[os] wl[restore] 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 al[l] ar[gs] arga[dd] argd[elete] argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] buffers bun[load] bw[ipeout] 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] ce[nter] cex[pr] cf[ile] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] col[der] colo[rscheme] comc[lear] comp[iler] con[tinue] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] delm[arks] defc[ompile] di[splay] dif[fupdate] diffg[et] diffo[ff] nextgroup=vimBang
+syn keyword vimCommand contained 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] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] his[tory] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] 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] lcl[ose] lcs[cope] le[ft] lex[pr] lf[ile] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] nextgroup=vimBang
+syn keyword vimCommand contained lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] nextgroup=vimBang
+syn keyword vimCommand contained sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] 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] sync[bind] smi[le] t tN[ext] ta[g] tags tabc[lose] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs te[aroff] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] up[date] v[global] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] nextgroup=vimBang
+syn keyword vimCommand contained vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winp[os] wl[restore] 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 :syn-match to allow for :command/function() distinction
" :chdir is handled specially elsewhere
syn case match
" All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
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 vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
syn keyword vimBehaveModel contained mswin xterm
+" Break* commands {{{2
+" ===============
+syn keyword vimBreakaddFunc contained func skipwhite nextgroup=vimBreakpointFunctionLine,vimBreakpointFunction
+syn keyword vimBreakaddFile contained file skipwhite nextgroup=vimBreakpointFileLine,vimBreakpointFilename
+syn keyword vimBreakaddHere contained here skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn keyword vimBreakaddExpr contained expr skipwhite nextgroup=@vimExprList
+
+syn match vimBreakpointGlob contained "*" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointNumber contained "\<\d\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+
+syn cluster vimBreakpointArg contains=vimBreakaddFunc,vimBreakaddFile,vimBreakaddHere,vimBreakaddExpr
+
+syn match vimBreakpointFunction contained "\<\%(\*\|\w\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointFilename contained "\<\%(\*\|\f\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep
+syn match vimBreakpointFunctionLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFunction
+syn match vimBreakpointFileLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFilename
+
+syn keyword vimBreakadd breaka[dd] skipwhite nextgroup=@vimBreakpointArg
+syn keyword vimBreakdel breakd[el] skipwhite nextgroup=@vimBreakpointArg,vimBreakpointNumber,vimBreakpointGlob
+syn keyword vimBreaklist breakl[ist] skipwhite nextgroup=vimComment,vim9Comment,vimSep
+
" Call {{{2
" ====
syn match vimCall "\<call\=\>" skipwhite nextgroup=vimVar,@vimFunc
syn match vimCdBang contained "\a\@1<=!" skipwhite nextgroup=vimCdArg,vimComment,vim9Comment,vimCmdSep
+" Debug {{{2
+" =====
+syn keyword vimDebug deb[ug] skipwhite nextgroup=@vimCmdList
+
" Debuggreedy {{{2
" ===========
" TODO: special-cased until generalised range/count support is implemented
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
hi def link vimBracket Delimiter
+ hi def link vimBreakaddFunc Special
+ hi def link vimBreakaddFile Special
+ hi def link vimBreakaddHere Special
+ hi def link vimBreakaddExpr Special
+ hi def link vimBreakpointGlob Special
+ hi def link vimBreakadd vimCommand
+ hi def link vimBreakdel vimCommand
+ hi def link vimBreaklist vimCommand
hi def link vimCall vimCommand
hi def link vimCatch vimCommand
hi def link vimCd vimCommand
hi def link vimContinueString vimString
hi def link vimCount Number
hi def link vimCtrlChar SpecialChar
+ hi def link vimDebug vimCommand
hi def link vimDebuggreedy vimCommand
hi def link vimDef vimCommand
hi def link vimDefBang vimBang