runtime(vim): Update base-syntax, improve performance

Contain the vimNotation syntax group, matching this at top level is
unnecessary and very slow.

The removed vimString and vimNumber definitions are broken and/or never
match. They have long been replaced by newer definitions.

closes: #16645

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base
index d2ddd1c..009b208 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2025 Feb 13
+" Last Change:	   2025 Feb 16
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -199,7 +199,6 @@
 syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\<0z\>'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
-syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
@@ -360,7 +359,7 @@
 syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncScope,vimFuncSID,Tag
 syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncScope,vimFuncSID,Tag
 
-syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
+syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
 syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimInsert,vimConst,vimLet,vimSearch
 syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Block,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9LhsVariable,vim9LhsVariableList,vim9LhsRegister,vim9Search,@vimSpecialVar
 
@@ -630,7 +629,10 @@
 syn match	vimEnvvar	"\$\I\i*"
 syn match	vimEnvvar	"\${\I\i*}"
 
-" In-String Specials: {{{2
+" Strings {{{2
+" =======
+
+" In-String Specials:
 " Try to catch strings, if nothing else matches (therefore it must precede the others!)
 "  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
 syn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
@@ -643,8 +645,6 @@
 syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscript contains=@vimStringGroup extend
 syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+		       nextgroup=vimSubscript contains=vimQuoteEscape  extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
-syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
-syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
 
 syn match	vimEscape	contained	"\\."
 " syn match	vimEscape	contained	+\\[befnrt\"]+
@@ -685,9 +685,6 @@
 syn match	vimSubstDelim	contained	"\\"
 syn match	vimSubstPat	contained	"\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
 
-" 'String': {{{2
-syn match	vimString	"[^(,]'[^']\{-}\zs'"
-
 " Marks, Registers, Addresses, Filters: {{{2
 syn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimFilter,vimMarkNumber,vimSubst1
 syn match	vimMark	"'[[\]{}()<>]\ze[-+,!]"	nextgroup=vimFilter,vimMarkNumber,vimSubst1
@@ -875,22 +872,22 @@
 " Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
 
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>"		contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>"	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>"		contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>"	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>"		contains=vimBracket
 
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>"				contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>"	contains=vimBracket
-syn match	vimNotation	'\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1				contains=vimBracket
-syn match	vimNotation	'\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>'	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>"	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>"				contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>"	contains=vimBracket
+syn match	vimNotation	contained	'\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1				contains=vimBracket
+syn match	vimNotation	contained	'\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>'	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>"	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>"		contains=vimBracket
 
 syn match	vimBracket contained	"[\\<>]"
 syn case match
@@ -916,7 +913,7 @@
  syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
 endif
 
-syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>"	skipwhite nextgroup=@vimExprList,vimNotation
+syn match	vimNotFunc	"\%#=1\<\%(if\|el\%[seif]\|retu\%[rn]\|while\)\>"	skipwhite nextgroup=@vimExprList,vimNotation
 
 " Match: {{{2
 " =====
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_00.dump b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
index ed58e2f..ea37115 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
@@ -1,20 +1,20 @@
 >"+0#0000e05#ffffff0| |K|e|y| |n|o|t|a|t|i|o|n| +0#0000000&@60
 @75
-|<+0#e000e06&|S|p|a|c|e|>| +0#0000000&@67
-|<+0#e000e06&|T|a|b|>| +0#0000000&@69
-|<+0#e000e06&|T|a|b|>| +0#0000000&@69
-|<+0#e000e06&|N|L|>| +0#0000000&@70
-|<+0#e000e06&|N|e|w|L|i|n|e|>| +0#0000000&@65
-|<+0#e000e06&|L|i|n|e|F|e@1|d|>| +0#0000000&@64
-|<+0#e000e06&|L|F|>| +0#0000000&@70
-|<+0#e000e06&|C|R|>| +0#0000000&@70
-|<+0#e000e06&|R|e|t|u|r|n|>| +0#0000000&@66
-|<+0#e000e06&|E|n|t|e|r|>| +0#0000000&@67
-|<+0#e000e06&|B|S|>| +0#0000000&@70
-|<+0#e000e06&|B|a|c|k|S|p|a|c|e|>| +0#0000000&@63
-|<+0#e000e06&|E|s|c|>| +0#0000000&@69
-|<+0#e000e06&|C|S|I|>| +0#0000000&@69
-|<+0#e000e06&|x|C|S|I|>| +0#0000000&@68
-|<+0#e000e06&|B|a|r|>| +0#0000000&@69
-|<+0#e000e06&|B|s|l|a|s|h|>| +0#0000000&@66
+|m+0#af5f00255&|a|p| +0#0000000&|f|o@1| @67
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|p|a|c|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|T|a|b|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|T|a|b|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|N|L|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|N|e|w|L|i|n|e|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|i|n|e|F|e@1|d|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|F|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|C|R|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|R|e|t|u|r|n|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|E|n|t|e|r|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|S|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|a|c|k|S|p|a|c|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|E|s|c|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|C|S|I|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|C|S|I|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|a|r|>| +0#0000000&@61
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_01.dump b/runtime/syntax/testdir/dumps/vim_key_notation_01.dump
index 0cbf0ee..b14d575 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_01.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|B|a|c|k|S|p|a|c|e|>| +0#0000000&@63
-|<+0#e000e06&|E|s|c|>| +0#0000000&@69
-|<+0#e000e06&|C|S|I|>| +0#0000000&@69
-|<+0#e000e06&|x|C|S|I|>| +0#0000000&@68
-|<+0#e000e06&|B|a|r|>| +0#0000000&@69
-><+0#e000e06&|B|s|l|a|s|h|>| +0#0000000&@66
-|<+0#e000e06&|D|e|l|>| +0#0000000&@69
-|<+0#e000e06&|D|e|l|e|t|e|>| +0#0000000&@66
-|<+0#e000e06&|k|D|e|l|>| +0#0000000&@68
-|<+0#e000e06&|U|p|>| +0#0000000&@70
-|<+0#e000e06&|D|o|w|n|>| +0#0000000&@68
-|<+0#e000e06&|L|e|f|t|>| +0#0000000&@68
-|<+0#e000e06&|R|i|g|h|t|>| +0#0000000&@67
-|<+0#e000e06&|x|U|p|>| +0#0000000&@69
-|<+0#e000e06&|x|D|o|w|n|>| +0#0000000&@67
-|<+0#e000e06&|x|L|e|f|t|>| +0#0000000&@67
-|<+0#e000e06&|x|R|i|g|h|t|>| +0#0000000&@66
-|<+0#e000e06&|P|a|s|t|e|S|t|a|r|t|>| +0#0000000&@62
-|<+0#e000e06&|P|a|s|t|e|E|n|d|>| +0#0000000&@64
-@57|1|9|,|1| @10|9|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|S|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|a|c|k|S|p|a|c|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|E|s|c|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|C|S|I|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|C|S|I|>| +0#0000000&@60
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|a|r|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|B|s|l|a|s|h|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|D|e|l|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|D|e|l|e|t|e|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|D|e|l|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|U|p|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|D|o|w|n|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|R|i|g|h|t|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|U|p|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|D|o|w|n|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|L|e|f|t|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|R|i|g|h|t|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|a|s|t|e|S|t|a|r|t|>| +0#0000000&@54
+@57|1|9|,|7| @10|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_02.dump b/runtime/syntax/testdir/dumps/vim_key_notation_02.dump
index 01fca78..5826a4e 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_02.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|P|a|s|t|e|E|n|d|>| +0#0000000&@64
-|<+0#e000e06&|F|1|>| +0#0000000&@70
-|<+0#e000e06&|F|2|>| +0#0000000&@70
-|<+0#e000e06&|F|3|>| +0#0000000&@70
-|<+0#e000e06&|F|4|>| +0#0000000&@70
-><+0#e000e06&|F|5|>| +0#0000000&@70
-|<+0#e000e06&|F|6|>| +0#0000000&@70
-|<+0#e000e06&|F|7|>| +0#0000000&@70
-|<+0#e000e06&|F|8|>| +0#0000000&@70
-|<+0#e000e06&|F|9|>| +0#0000000&@70
-|<+0#e000e06&|F|1|0|>| +0#0000000&@69
-|<+0#e000e06&|F|1@1|>| +0#0000000&@69
-|<+0#e000e06&|F|1|2|>| +0#0000000&@69
-|<+0#e000e06&|F|1|3|>| +0#0000000&@69
-|<+0#e000e06&|F|1|4|>| +0#0000000&@69
-|<+0#e000e06&|F|1|5|>| +0#0000000&@69
-|<+0#e000e06&|F|1|6|>| +0#0000000&@69
-|<+0#e000e06&|F|1|7|>| +0#0000000&@69
-|<+0#e000e06&|F|1|8|>| +0#0000000&@69
-@57|3|7|,|1| @9|2|1|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|a|s|t|e|S|t|a|r|t|>| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|a|s|t|e|E|n|d|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|>| +0#0000000&@62
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|4|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|5|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|6|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|7|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|8|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|9|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|0|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1@1|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|2|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|3|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|4|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|5|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|6|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|7|>| +0#0000000&@61
+@57|3|7|,|7| @9|2|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_03.dump b/runtime/syntax/testdir/dumps/vim_key_notation_03.dump
index dfdf890..ccb9f02 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_03.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|F|1|8|>| +0#0000000&@69
-|<+0#e000e06&|F|1|9|>| +0#0000000&@69
-|<+0#e000e06&|F|2|0|>| +0#0000000&@69
-|<+0#e000e06&|F|2|1|>| +0#0000000&@69
-|<+0#e000e06&|F|2@1|>| +0#0000000&@69
-><+0#e000e06&|F|2|3|>| +0#0000000&@69
-|<+0#e000e06&|F|2|4|>| +0#0000000&@69
-|<+0#e000e06&|F|2|5|>| +0#0000000&@69
-|<+0#e000e06&|F|2|6|>| +0#0000000&@69
-|<+0#e000e06&|F|2|7|>| +0#0000000&@69
-|<+0#e000e06&|F|2|8|>| +0#0000000&@69
-|<+0#e000e06&|F|2|9|>| +0#0000000&@69
-|<+0#e000e06&|F|3|0|>| +0#0000000&@69
-|<+0#e000e06&|F|3|1|>| +0#0000000&@69
-|<+0#e000e06&|F|3|2|>| +0#0000000&@69
-|<+0#e000e06&|F|3@1|>| +0#0000000&@69
-|<+0#e000e06&|F|3|4|>| +0#0000000&@69
-|<+0#e000e06&|F|3|5|>| +0#0000000&@69
-|<+0#e000e06&|F|3|6|>| +0#0000000&@69
-@57|5@1|,|1| @9|3|4|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|7|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|8|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|1|9|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|0|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|1|>| +0#0000000&@61
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2@1|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|3|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|4|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|5|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|6|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|7|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|8|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|2|9|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|0|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|1|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|2|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3@1|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|4|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|5|>| +0#0000000&@61
+@57|5@1|,|7| @9|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_04.dump b/runtime/syntax/testdir/dumps/vim_key_notation_04.dump
index 8820c26..d346187 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_04.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|F|3|6|>| +0#0000000&@69
-|<+0#e000e06&|F|3|7|>| +0#0000000&@69
-|<+0#e000e06&|x|F|1|>| +0#0000000&@69
-|<+0#e000e06&|x|F|2|>| +0#0000000&@69
-|<+0#e000e06&|x|F|3|>| +0#0000000&@69
-><+0#e000e06&|x|F|4|>| +0#0000000&@69
-|<+0#e000e06&|H|e|l|p|>| +0#0000000&@68
-|<+0#e000e06&|U|n|d|o|>| +0#0000000&@68
-|<+0#e000e06&|I|n|s|e|r|t|>| +0#0000000&@66
-|<+0#e000e06&|I|n|s|>| +0#0000000&@69
-|<+0#e000e06&|k|I|n|s|e|r|t|>| +0#0000000&@65
-|<+0#e000e06&|H|o|m|e|>| +0#0000000&@68
-|<+0#e000e06&|k|H|o|m|e|>| +0#0000000&@67
-|<+0#e000e06&|x|H|o|m|e|>| +0#0000000&@67
-|<+0#e000e06&|z|H|o|m|e|>| +0#0000000&@67
-|<+0#e000e06&|E|n|d|>| +0#0000000&@69
-|<+0#e000e06&|k|E|n|d|>| +0#0000000&@68
-|<+0#e000e06&|x|E|n|d|>| +0#0000000&@68
-|<+0#e000e06&|z|E|n|d|>| +0#0000000&@68
-@57|7|3|,|1| @9|4|6|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|5|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|6|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|3|7|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|F|1|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|F|2|>| +0#0000000&@61
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|F|3|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|F|4|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|H|e|l|p|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|U|n|d|o|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|I|n|s|e|r|t|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|I|n|s|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|I|n|s|e|r|t|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|H|o|m|e|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|H|o|m|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|H|o|m|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|z|H|o|m|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|E|n|d|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|E|n|d|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|E|n|d|>| +0#0000000&@60
+@57|7|3|,|7| @9|4|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_05.dump b/runtime/syntax/testdir/dumps/vim_key_notation_05.dump
index 939bf89..2962483 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_05.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|z|E|n|d|>| +0#0000000&@68
-|<+0#e000e06&|P|a|g|e|U|p|>| +0#0000000&@66
-|<+0#e000e06&|P|a|g|e|D|o|w|n|>| +0#0000000&@64
-|<+0#e000e06&|k|P|a|g|e|U|p|>| +0#0000000&@65
-|<+0#e000e06&|k|P|a|g|e|D|o|w|n|>| +0#0000000&@63
-><+0#e000e06&|k|P|l|u|s|>| +0#0000000&@67
-|<+0#e000e06&|k|M|i|n|u|s|>| +0#0000000&@66
-|<+0#e000e06&|k|D|i|v|i|d|e|>| +0#0000000&@65
-|<+0#e000e06&|k|M|u|l|t|i|p|l|y|>| +0#0000000&@63
-|<+0#e000e06&|k|E|n|t|e|r|>| +0#0000000&@66
-|<+0#e000e06&|k|P|o|i|n|t|>| +0#0000000&@66
-|<+0#e000e06&|k|0|>| +0#0000000&@70
-|<+0#e000e06&|k|1|>| +0#0000000&@70
-|<+0#e000e06&|k|2|>| +0#0000000&@70
-|<+0#e000e06&|k|3|>| +0#0000000&@70
-|<+0#e000e06&|k|4|>| +0#0000000&@70
-|<+0#e000e06&|k|5|>| +0#0000000&@70
-|<+0#e000e06&|k|6|>| +0#0000000&@70
-|<+0#e000e06&|k|7|>| +0#0000000&@70
-@57|9|1|,|1| @9|5|9|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|x|E|n|d|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|z|E|n|d|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|a|g|e|U|p|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|a|g|e|D|o|w|n|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|P|a|g|e|U|p|>| +0#0000000&@57
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|P|a|g|e|D|o|w|n|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|P|l|u|s|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|M|i|n|u|s|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|D|i|v|i|d|e|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|M|u|l|t|i|p|l|y|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|E|n|t|e|r|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|P|o|i|n|t|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|0|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|1|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|2|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|3|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|4|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|5|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|6|>| +0#0000000&@62
+@57|9|1|,|7| @9|5|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_06.dump b/runtime/syntax/testdir/dumps/vim_key_notation_06.dump
index e82c7f3..66a80f2 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_06.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|k|7|>| +0#0000000&@70
-|<+0#e000e06&|k|8|>| +0#0000000&@70
-|<+0#e000e06&|k|9|>| +0#0000000&@70
-|<+0#e000e06&|l|t|>| +0#0000000&@70
-|<+0#e000e06&|M|o|u|s|e|>| +0#0000000&@67
-><+0#e000e06&|N|e|t|M|o|u|s|e|>| +0#0000000&@64
-|<+0#e000e06&|D|e|c|M|o|u|s|e|>| +0#0000000&@64
-|<+0#e000e06&|J|s|b|M|o|u|s|e|>| +0#0000000&@64
-|<+0#e000e06&|P|t|e|r|m|M|o|u|s|e|>| +0#0000000&@62
-|<+0#e000e06&|U|r|x|v|t|M|o|u|s|e|>| +0#0000000&@62
-|<+0#e000e06&|S|g|r|M|o|u|s|e|>| +0#0000000&@64
-|<+0#e000e06&|S|g|r|M|o|u|s|e|R|e|l|e|a|s|e|>| +0#0000000&@57
-|<+0#e000e06&|L|e|f|t|M|o|u|s|e|>| +0#0000000&@63
-|<+0#e000e06&|L|e|f|t|M|o|u|s|e|N|M|>| +0#0000000&@61
-|<+0#e000e06&|L|e|f|t|D|r|a|g|>| +0#0000000&@64
-|<+0#e000e06&|L|e|f|t|R|e|l|e|a|s|e|>| +0#0000000&@61
-|<+0#e000e06&|L|e|f|t|R|e|l|e|a|s|e|N|M|>| +0#0000000&@59
-|<+0#e000e06&|M|o|u|s|e|M|o|v|e|>| +0#0000000&@63
-|<+0#e000e06&|M|i|d@1|l|e|M|o|u|s|e|>| +0#0000000&@61
-@57|1|0|9|,|1| @8|7|1|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|6|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|7|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|8|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|k|9|>| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|l|t|>| +0#0000000&@62
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|o|u|s|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|N|e|t|M|o|u|s|e|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|D|e|c|M|o|u|s|e|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|J|s|b|M|o|u|s|e|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|t|e|r|m|M|o|u|s|e|>| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|U|r|x|v|t|M|o|u|s|e|>| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|g|r|M|o|u|s|e|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|g|r|M|o|u|s|e|R|e|l|e|a|s|e|>| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|M|o|u|s|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|M|o|u|s|e|N|M|>| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|D|r|a|g|>| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|R|e|l|e|a|s|e|>| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|L|e|f|t|R|e|l|e|a|s|e|N|M|>| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|o|u|s|e|M|o|v|e|>| +0#0000000&@55
+@57|1|0|9|,|7| @8|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_07.dump b/runtime/syntax/testdir/dumps/vim_key_notation_07.dump
index 3e21774..a05017e 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_07.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|M|i|d@1|l|e|M|o|u|s|e|>| +0#0000000&@61
-|<+0#e000e06&|M|i|d@1|l|e|D|r|a|g|>| +0#0000000&@62
-|<+0#e000e06&|M|i|d@1|l|e|R|e|l|e|a|s|e|>| +0#0000000&@59
-|<+0#e000e06&|R|i|g|h|t|M|o|u|s|e|>| +0#0000000&@62
-|<+0#e000e06&|R|i|g|h|t|D|r|a|g|>| +0#0000000&@63
-><+0#e000e06&|R|i|g|h|t|R|e|l|e|a|s|e|>| +0#0000000&@60
-|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|U|p|>| +0#0000000&@59
-|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|D|o|w|n|>| +0#0000000&@57
-|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|R|i|g|h|t|>| +0#0000000&@56
-|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|L|e|f|t|>| +0#0000000&@57
-|<+0#e000e06&|M|o|u|s|e|D|o|w|n|>| +0#0000000&@63
-|<+0#e000e06&|M|o|u|s|e|U|p|>| +0#0000000&@65
-|<+0#e000e06&|X|1|M|o|u|s|e|>| +0#0000000&@65
-|<+0#e000e06&|X|1|D|r|a|g|>| +0#0000000&@66
-|<+0#e000e06&|X|1|R|e|l|e|a|s|e|>| +0#0000000&@63
-|<+0#e000e06&|X|2|M|o|u|s|e|>| +0#0000000&@65
-|<+0#e000e06&|X|2|D|r|a|g|>| +0#0000000&@66
-|<+0#e000e06&|X|2|R|e|l|e|a|s|e|>| +0#0000000&@63
-|<+0#e000e06&|D|r|o|p|>| +0#0000000&@68
-@57|1|2|7|,|1| @8|8|4|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|o|u|s|e|M|o|v|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|i|d@1|l|e|M|o|u|s|e|>| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|i|d@1|l|e|D|r|a|g|>| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|i|d@1|l|e|R|e|l|e|a|s|e|>| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|R|i|g|h|t|M|o|u|s|e|>| +0#0000000&@54
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|R|i|g|h|t|D|r|a|g|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|R|i|g|h|t|R|e|l|e|a|s|e|>| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|U|p|>| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|D|o|w|n|>| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|R|i|g|h|t|>| +0#0000000&@48
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|c|r|o|l@1|W|h|e@1|l|L|e|f|t|>| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|o|u|s|e|D|o|w|n|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|M|o|u|s|e|U|p|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|1|M|o|u|s|e|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|1|D|r|a|g|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|1|R|e|l|e|a|s|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|2|M|o|u|s|e|>| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|2|D|r|a|g|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|2|R|e|l|e|a|s|e|>| +0#0000000&@55
+@57|1|2|7|,|7| @8|8|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_08.dump b/runtime/syntax/testdir/dumps/vim_key_notation_08.dump
index 7337575..37db049 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_08.dump
@@ -1,20 +1,20 @@
-|<+0#e000e06#ffffff0|D|r|o|p|>| +0#0000000&@68
-|<+0#e000e06&|N|u|l|>| +0#0000000&@69
-|<+0#e000e06&|S|N|R|>| +0#0000000&@69
-|<+0#e000e06&|P|l|u|g|>| +0#0000000&@68
-|<+0#e000e06&|C|u|r|s|o|r|H|o|l|d|>| +0#0000000&@62
-><+0#e000e06&|I|g|n|o|r|e|>| +0#0000000&@66
-|<+0#e000e06&|C|m|d|>| +0#0000000&@69
-|<+0#e000e06&|S|c|r|i|p|t|C|m|d|>| +0#0000000&@63
-|<+0#e000e06&|F|o|c|u|s|G|a|i|n|e|d|>| +0#0000000&@61
-|<+0#e000e06&|F|o|c|u|s|L|o|s|t|>| +0#0000000&@63
-@75
-|<+0#e000e06&|c|w|o|r|d|>| +0#0000000&@67
-|<+0#e000e06&|c|W|O|R|D|>| +0#0000000&@67
-|<+0#e000e06&|c|e|x|p|r|>| +0#0000000&@67
-|<+0#e000e06&|c|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|b|u|f|>| +0#0000000&@68
-|<+0#e000e06&|a|m|a|t|c|h|>| +0#0000000&@66
-|<+0#e000e06&|s|f|i|l|e|>| +0#0000000&@67
-@57|1|4|5|,|1| @8|9|6|%| 
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|X|2|R|e|l|e|a|s|e|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|D|r|o|p|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|N|u|l|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|N|R|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|P|l|u|g|>| +0#0000000&@60
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|C|u|r|s|o|r|H|o|l|d|>| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|I|g|n|o|r|e|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|C|m|d|>| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|S|c|r|i|p|t|C|m|d|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|o|c|u|s|G|a|i|n|e|d|>| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|F|o|c|u|s|L|o|s|t|>| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&@67
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|c|w|o|r|d|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|c|W|O|R|D|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|c|e|x|p|r|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|c|f|i|l|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|a|f|i|l|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|a|b|u|f|>| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|a|m|a|t|c|h|>| +0#0000000&@58
+@57|1|4|5|,|7| @8|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_09.dump b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
index d7fc77d..d9adc7b 100644
--- a/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
@@ -1,9 +1,11 @@
-|<+0#e000e06#ffffff0|s|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@67
-|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@66
-|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@67
-|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@66
-><+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@66
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|<+0#e000e06&|a|m|a|t|c|h|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|s|f|i|l|e|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@59
+@6>\+0#e000e06&| +0#0000000&|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|<+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@58
+@75
 |~+0#4040ff13&| @73
 |~| @73
 |~| @73
@@ -15,6 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|6|3|,|1| @8|B|o|t| 
+| +0#0000000&@56|1|6|3|,|7| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/input/vim_key_notation.vim b/runtime/syntax/testdir/input/vim_key_notation.vim
index 8bc128a..8572499 100644
--- a/runtime/syntax/testdir/input/vim_key_notation.vim
+++ b/runtime/syntax/testdir/input/vim_key_notation.vim
@@ -1,163 +1,165 @@
 " Key notation
  
-<Space>
-<Tab>
-<Tab>
-<NL>
-<NewLine>
-<LineFeed>
-<LF>
-<CR>
-<Return>
-<Enter>
-<BS>
-<BackSpace>
-<Esc>
-<CSI>
-<xCSI>
-<Bar>
-<Bslash>
-<Del>
-<Delete>
-<kDel>
-<Up>
-<Down>
-<Left>
-<Right>
-<xUp>
-<xDown>
-<xLeft>
-<xRight>
-<PasteStart>
-<PasteEnd>
-<F1>
-<F2>
-<F3>
-<F4>
-<F5>
-<F6>
-<F7>
-<F8>
-<F9>
-<F10>
-<F11>
-<F12>
-<F13>
-<F14>
-<F15>
-<F16>
-<F17>
-<F18>
-<F19>
-<F20>
-<F21>
-<F22>
-<F23>
-<F24>
-<F25>
-<F26>
-<F27>
-<F28>
-<F29>
-<F30>
-<F31>
-<F32>
-<F33>
-<F34>
-<F35>
-<F36>
-<F37>
-<xF1>
-<xF2>
-<xF3>
-<xF4>
-<Help>
-<Undo>
-<Insert>
-<Ins>
-<kInsert>
-<Home>
-<kHome>
-<xHome>
-<zHome>
-<End>
-<kEnd>
-<xEnd>
-<zEnd>
-<PageUp>
-<PageDown>
-<kPageUp>
-<kPageDown>
-<kPlus>
-<kMinus>
-<kDivide>
-<kMultiply>
-<kEnter>
-<kPoint>
-<k0>
-<k1>
-<k2>
-<k3>
-<k4>
-<k5>
-<k6>
-<k7>
-<k8>
-<k9>
-<lt>
-<Mouse>
-<NetMouse>
-<DecMouse>
-<JsbMouse>
-<PtermMouse>
-<UrxvtMouse>
-<SgrMouse>
-<SgrMouseRelease>
-<LeftMouse>
-<LeftMouseNM>
-<LeftDrag>
-<LeftRelease>
-<LeftReleaseNM>
-<MouseMove>
-<MiddleMouse>
-<MiddleDrag>
-<MiddleRelease>
-<RightMouse>
-<RightDrag>
-<RightRelease>
-<ScrollWheelUp>
-<ScrollWheelDown>
-<ScrollWheelRight>
-<ScrollWheelLeft>
-<MouseDown>
-<MouseUp>
-<X1Mouse>
-<X1Drag>
-<X1Release>
-<X2Mouse>
-<X2Drag>
-<X2Release>
-<Drop>
-<Nul>
-<SNR>
-<Plug>
-<CursorHold>
-<Ignore>
-<Cmd>
-<ScriptCmd>
-<FocusGained>
-<FocusLost>
+map foo 
+      \ <Space>
+      \ <Tab>
+      \ <Tab>
+      \ <NL>
+      \ <NewLine>
+      \ <LineFeed>
+      \ <LF>
+      \ <CR>
+      \ <Return>
+      \ <Enter>
+      \ <BS>
+      \ <BackSpace>
+      \ <Esc>
+      \ <CSI>
+      \ <xCSI>
+      \ <Bar>
+      \ <Bslash>
+      \ <Del>
+      \ <Delete>
+      \ <kDel>
+      \ <Up>
+      \ <Down>
+      \ <Left>
+      \ <Right>
+      \ <xUp>
+      \ <xDown>
+      \ <xLeft>
+      \ <xRight>
+      \ <PasteStart>
+      \ <PasteEnd>
+      \ <F1>
+      \ <F2>
+      \ <F3>
+      \ <F4>
+      \ <F5>
+      \ <F6>
+      \ <F7>
+      \ <F8>
+      \ <F9>
+      \ <F10>
+      \ <F11>
+      \ <F12>
+      \ <F13>
+      \ <F14>
+      \ <F15>
+      \ <F16>
+      \ <F17>
+      \ <F18>
+      \ <F19>
+      \ <F20>
+      \ <F21>
+      \ <F22>
+      \ <F23>
+      \ <F24>
+      \ <F25>
+      \ <F26>
+      \ <F27>
+      \ <F28>
+      \ <F29>
+      \ <F30>
+      \ <F31>
+      \ <F32>
+      \ <F33>
+      \ <F34>
+      \ <F35>
+      \ <F36>
+      \ <F37>
+      \ <xF1>
+      \ <xF2>
+      \ <xF3>
+      \ <xF4>
+      \ <Help>
+      \ <Undo>
+      \ <Insert>
+      \ <Ins>
+      \ <kInsert>
+      \ <Home>
+      \ <kHome>
+      \ <xHome>
+      \ <zHome>
+      \ <End>
+      \ <kEnd>
+      \ <xEnd>
+      \ <zEnd>
+      \ <PageUp>
+      \ <PageDown>
+      \ <kPageUp>
+      \ <kPageDown>
+      \ <kPlus>
+      \ <kMinus>
+      \ <kDivide>
+      \ <kMultiply>
+      \ <kEnter>
+      \ <kPoint>
+      \ <k0>
+      \ <k1>
+      \ <k2>
+      \ <k3>
+      \ <k4>
+      \ <k5>
+      \ <k6>
+      \ <k7>
+      \ <k8>
+      \ <k9>
+      \ <lt>
+      \ <Mouse>
+      \ <NetMouse>
+      \ <DecMouse>
+      \ <JsbMouse>
+      \ <PtermMouse>
+      \ <UrxvtMouse>
+      \ <SgrMouse>
+      \ <SgrMouseRelease>
+      \ <LeftMouse>
+      \ <LeftMouseNM>
+      \ <LeftDrag>
+      \ <LeftRelease>
+      \ <LeftReleaseNM>
+      \ <MouseMove>
+      \ <MiddleMouse>
+      \ <MiddleDrag>
+      \ <MiddleRelease>
+      \ <RightMouse>
+      \ <RightDrag>
+      \ <RightRelease>
+      \ <ScrollWheelUp>
+      \ <ScrollWheelDown>
+      \ <ScrollWheelRight>
+      \ <ScrollWheelLeft>
+      \ <MouseDown>
+      \ <MouseUp>
+      \ <X1Mouse>
+      \ <X1Drag>
+      \ <X1Release>
+      \ <X2Mouse>
+      \ <X2Drag>
+      \ <X2Release>
+      \ <Drop>
+      \ <Nul>
+      \ <SNR>
+      \ <Plug>
+      \ <CursorHold>
+      \ <Ignore>
+      \ <Cmd>
+      \ <ScriptCmd>
+      \ <FocusGained>
+      \ <FocusLost>
+      \ 
+      \ <cword>
+      \ <cWORD>
+      \ <cexpr>
+      \ <cfile>
+      \ <afile>
+      \ <abuf>
+      \ <amatch>
+      \ <sfile>
+      \ <stack>
+      \ <script>
+      \ <slnum>
+      \ <sflnum>
+      \ <client>
 
-<cword>
-<cWORD>
-<cexpr>
-<cfile>
-<afile>
-<abuf>
-<amatch>
-<sfile>
-<stack>
-<script>
-<slnum>
-<sflnum>
-<client>
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 8bb91e3..7047373 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2025 Feb 13
+" Last Change:	   2025 Feb 16
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -237,7 +237,6 @@
 syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\<0z\>'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
-syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
@@ -398,7 +397,7 @@
 syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncScope,vimFuncSID,Tag
 syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncScope,vimFuncSID,Tag
 
-syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
+syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
 syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimInsert,vimConst,vimLet,vimSearch
 syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Block,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9LhsVariable,vim9LhsVariableList,vim9LhsRegister,vim9Search,@vimSpecialVar
 
@@ -670,7 +669,10 @@
 syn match	vimEnvvar	"\$\I\i*"
 syn match	vimEnvvar	"\${\I\i*}"
 
-" In-String Specials: {{{2
+" Strings {{{2
+" =======
+
+" In-String Specials:
 " Try to catch strings, if nothing else matches (therefore it must precede the others!)
 "  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
 syn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
@@ -683,8 +685,6 @@
 syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscript contains=@vimStringGroup extend
 syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+		       nextgroup=vimSubscript contains=vimQuoteEscape  extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
-syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
-syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
 
 syn match	vimEscape	contained	"\\."
 " syn match	vimEscape	contained	+\\[befnrt\"]+
@@ -725,9 +725,6 @@
 syn match	vimSubstDelim	contained	"\\"
 syn match	vimSubstPat	contained	"\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
 
-" 'String': {{{2
-syn match	vimString	"[^(,]'[^']\{-}\zs'"
-
 " Marks, Registers, Addresses, Filters: {{{2
 syn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimFilter,vimMarkNumber,vimSubst1
 syn match	vimMark	"'[[\]{}()<>]\ze[-+,!]"	nextgroup=vimFilter,vimMarkNumber,vimSubst1
@@ -921,22 +918,22 @@
 " Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
 
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>"		contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>"	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>"		contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>"			contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>"	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>"			contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>"		contains=vimBracket
 
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>"				contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>"	contains=vimBracket
-syn match	vimNotation	'\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1				contains=vimBracket
-syn match	vimNotation	'\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>'	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>"	contains=vimBracket
-syn match	vimNotation	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>"		contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>"				contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>"	contains=vimBracket
+syn match	vimNotation	contained	'\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1				contains=vimBracket
+syn match	vimNotation	contained	'\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>'	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>"	contains=vimBracket
+syn match	vimNotation	contained	"\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>"		contains=vimBracket
 
 syn match	vimBracket contained	"[\\<>]"
 syn case match
@@ -962,7 +959,7 @@
  syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
 endif
 
-syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>"	skipwhite nextgroup=@vimExprList,vimNotation
+syn match	vimNotFunc	"\%#=1\<\%(if\|el\%[seif]\|retu\%[rn]\|while\)\>"	skipwhite nextgroup=@vimExprList,vimNotation
 
 " Match: {{{2
 " =====