runtime(vim): Update syntax file (#13948)

Commit: 
https://github.com/vim/vim/commit/e3e3934bb18294b1a5636ed65299d3479f289a8e
Author: dkearns <dougkea...@gmail.com>
Date:   Fri Feb 2 07:44:26 2024 +1100

    runtime(vim): Update syntax file (https://github.com/vim/vim/issues/13948)
    
    Improve string escape sequence and special key matching.
    
    Signed-off-by: Doug Kearns <dougkea...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/testdir/dumps/vim_expr_00.dump 
b/runtime/syntax/testdir/dumps/vim_expr_00.dump
index 6330599d7..91ae9390d 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_00.dump
@@ -4,17 +4,17 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|t|a|b|:| |\|t|,| |n|e|w| 
|l|i|n|e|:| |\|n|,| |b|a|c|k|s|l|a|s|h|:| |\@1|'| +0#0000000&@31
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|t|a|b|:| 
|\+0#e000e06&|t|,+0#e000002&| |n|e|w| |l|i|n|e|:| |\+0#e000e06&|n|,+0#e000002&| 
|b|a|c|k|s|l|a|s|h|:| |\+0#e000e06&@1|"+0#e000002&| +0#0000000&@31
 @75
-|"+0#0000e05&| |S|t|r|i|n|g| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@52
+|"+0#0000e05&| |S|t|r|i|n|g| |e|s|c|a|p|e| |s|e|q|u|e|n|c|e|s| +0#0000000&@49
 @75
-|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|D|o|n|'@1|t| 
|h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|'| 
+0#0000000&@22
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|D|o|n|'|t| |h|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|"| +0#0000000&@23
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| 
|'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| 
|"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|e|x|p|r|.|v|i|m|"| |1|4|L|,| |5|2@1|B| 
@26|1|,|1| @10|A|l@1| 
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|3|1|6| 
+0#e000002&|-| |\+0#e000e06&|3|1| +0#e000002&|-| |\+0#e000e06&|3| 
+0#e000002&|-| |\+0#e000e06&|x|1|f| +0#e000002&|-| |\+0#e000e06&|x|f| 
+0#e000002&|-| |\+0#e000e06&|X|1|F| +0#e000002&|-| |\+0#e000e06&|X|F| 
+0#e000002&|-| |\+0#e000e06&|u|0|2|a|4| +0#e000002&|-| 
|\+0#e000e06&|U|0@4|2|a|4| +0#e000002&|-| |\+0#e000e06&|b| +0#e000002&
+|-| |\+0#e000e06&|e| +0#e000002&|-| |\+0#e000e06&|f| +0#e000002&|-| 
|\+0#e000e06&|n| +0#e000002&|-| |\+0#e000e06&|r| +0#e000002&|-| 
|\+0#e000e06&|t| +0#e000002&|-| |\+0#e000e06&@1| +0#e000002&|-| 
|\+0#e000e06&|"| +0#e000002&|-| |\+0#e000e06&|<|C|-|W|>|"+0#e000002&| 
+0#0000000&@30
+|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|\|3|1|6| |\|3|1| |\|3| 
|\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| 
|\|f| |\|n| |\|r| |\|t| |\@1| 
+|\|"| |\|<|C|-|W|>|'| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|3|1|6|0+0#e000002&| |-| 
|\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| 
|\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| 
|\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@22
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6| 
+0#e000002&|-| |\+0#e000e06&|3|1| +0#e000002&|-| |\+0#e000e06&|3| 
+0#e000002&|-| |\+0#e000e06&|x|1|f| +0#e000002&|-| |\+0#e000e06&|x|f| 
+0#e000002&|-| |\+0#e000e06&|X|1|F| +0#e000002&|-| |\+0#e000e06&|X|F| 
+0#e000002&|-| |\+0#e000e06&|u|0|2|a|4| +0#e000002&|-| 
|\+0#e000e06&|U|0@4|2|a|4| +0#e000002&|-| |\+0#e000e06&|b
+| +0#e000002&|-| |\+0#e000e06&|e| +0#e000002&|-| |\+0#e000e06&|f| 
+0#e000002&|-| |\+0#e000e06&|n| +0#e000002&|-| |\+0#e000e06&|r| +0#e000002&|-| 
|\+0#e000e06&|t| +0#e000002&|-| |\+0#e000e06&@1| +0#e000002&|-| 
|\+0#e000e06&|"| +0#e000002&|-| |\+0#e000e06&|<|C|-|W|>|"+0#e000002&| 
+0#0000000&@29
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| 
|\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| 
|\|f| |\|n| |\|r| |\|t| |\@1
+| |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| 
|\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| 
|\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| 
|\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
+|"|i|n|p|u|t|/|v|i|m|_|e|x|p|r|.|v|i|m|"| |3|2|L|,| |1@1|6|3|B| @25|1|,|1| 
@10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump 
b/runtime/syntax/testdir/dumps/vim_expr_01.dump
new file mode 100644
index 000000000..5f9b02ed0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| 
|\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| 
|\|e| |\|f| |\|n| |\|r| |\|t| |\@1
+| |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| 
|\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| 
|\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| 
|\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
+@75
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|a|>|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|a|>|"+0#e000002&| +0#0000000&@60
+>e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|"+0#e000002&| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|>+0#e000002&|"| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|>+0#e000002&|"| +0#0000000&@59
+@75
+|"+0#0000e05&| |S|t|r|i|n|g| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@52
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|D|o|n|'@1|t| 
|h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|'| 
+0#0000000&@22
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|D|o|n|'|t| |h|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|"| +0#0000000&@23
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| 
|'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| 
|"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
+@57|1|9|,|1| @9|9|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump 
b/runtime/syntax/testdir/dumps/vim_expr_02.dump
new file mode 100644
index 000000000..67f229d57
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump
@@ -0,0 +1,20 @@
+| +0#e000002#ffffff0@5|"+0#0000e05&|\| |e|s|c|a|p|e| |s|e|q|u|e|n|c|e| 
+0#0000000&@50
+| +0#e000002&@5|\+0#e000e06&@1|"| +0#e000002&|l|i|n|e| |2| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| 
|c|o|m@1|e|n|t| +0#0000000&@51
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| 
+0#0000000&|'+0#e000002&| +0#0000000&@65
+| +0#e000002&@5>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&|'+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| 
|c|o|m@1|e|n|t| +0#0000000&@51
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| 
+0#0000000&|$+0#e000002&|"| +0#0000000&@64
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| 
|c|o|m@1|e|n|t| +0#0000000&@51
+@57|3|7|,|7| @9|7|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump 
b/runtime/syntax/testdir/dumps/vim_expr_03.dump
new file mode 100644
index 000000000..23077c5a0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump
@@ -0,0 +1,20 @@
+| +0#e000002#ffffff0@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| 
|t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| 
+0#0000000&|$+0#e000002&|'| +0#0000000&@64
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
+| +0#e000002&@5>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
+| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#e000002&@5|\+0#e000e06&|'+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| 
|c|o|m@1|e|n|t| +0#0000000&@51
+@75
+|"+0#0000e05&| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
+|f|o@1|(+0#e000e06&|)| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| 
+0#0000000&@54
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|7| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_99.dump 
b/runtime/syntax/testdir/dumps/vim_expr_99.dump
index 10447b8c3..4bcf10ab8 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_99.dump
@@ -1,8 +1,11 @@
-|"+0#0000e05#ffffff0| |S|t|r|i|n|g| +0#0000000&@66
+|e+0#af5f00255#ffffff0|c|h|o| 
+0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| 
|\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| 
|\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| 
|\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
 @75
-|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|I|t|'@1|s| |a| |s|t|r|i|n|g|'| 
+0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|t|a|b|:| |\|t|,| |n|e|w| 
|l|i|n|e|:| |\|n|,| |b|a|c|k|s|l|a|s|h|:| |\@1|'| +0#0000000&@31
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|t|a|b|:| 
|\+0#e000e06&|t|,+0#e000002&| |n|e|w| |l|i|n|e|:| |\+0#e000e06&|n|,+0#e000002&| 
|b|a|c|k|s|l|a|s|h|:| |\+0#e000e06&@1|"+0#e000002&| +0#0000000&@31
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|a|>|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|a|>|"+0#e000002&| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|"+0#e000002&| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|>+0#e000002&|"| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|>+0#e000002&|"| +0#0000000&@59
 @75
 |"+0#0000e05&| |S|t|r|i|n|g| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@52
 @75
@@ -11,10 +14,7 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| 
|'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| 
|"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}| 
+0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
->e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| 
|i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#0000000&| 
|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#0000000&|1| 
|++0#af5f00255&| +0#0000000&|2|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| 
+0#0000000&|}| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
+> @74
 |~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|_|e|x|p|r|.|v|i|m|"| |1|4|L|,| |5|2@1|B| 
@26|1|4|,|1| @9|A|l@1| 
+| +0#0000000&@56|3|2|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_00.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
new file mode 100644
index 000000000..8b77cf347
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_00.dump
@@ -0,0 +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
+|"|i|n|p|u|t|/|v|i|m|_|k|e|y|_|n|o|t|a|t|i|o|n|.|v|i|m|"| |1|6|3|L|,| 
|1|3|4|6|B| @16|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
new file mode 100644
index 000000000..0cbf0ee0f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_01.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_02.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_02.dump
new file mode 100644
index 000000000..01fca78c4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_02.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_03.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_03.dump
new file mode 100644
index 000000000..dfdf8902f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_03.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_04.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_04.dump
new file mode 100644
index 000000000..8820c2680
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_04.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_05.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_05.dump
new file mode 100644
index 000000000..939bf89ba
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_05.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_06.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_06.dump
new file mode 100644
index 000000000..e82c7f3eb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_06.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_07.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_07.dump
new file mode 100644
index 000000000..3e21774e1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_07.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_08.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_08.dump
new file mode 100644
index 000000000..733757527
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_08.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_99.dump 
b/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
new file mode 100644
index 000000000..67dac5fbb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
@@ -0,0 +1,20 @@
+|<+0#e000e06#ffffff0|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
+|<+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
+@57|1|6|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_01.dump 
b/runtime/syntax/testdir/dumps/vim_variables_01.dump
index f1ce29d3f..02f68193d 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_01.dump
@@ -14,7 +14,7 @@
 @75
 |l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| 
+0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @59
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| 
+0#0000000&|=+0#af5f00255&| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|E+0#e000002&|s|c|>|[|2|3|4|;|"| 
+0#0000000&@49
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| 
+0#0000000&|=+0#af5f00255&| 
+0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| 
+0#0000000&@49
 @75
 |l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| 
+0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @58
 @57|1|9|,|1| @9|1|0|%| 
diff --git a/runtime/syntax/testdir/input/vim_expr.vim 
b/runtime/syntax/testdir/input/vim_expr.vim
index 0547e9bd4..be2cb2cf0 100644
--- a/runtime/syntax/testdir/input/vim_expr.vim
+++ b/runtime/syntax/testdir/input/vim_expr.vim
@@ -4,6 +4,23 @@ echo 'It''s a string'
 echo 'tab:     , new line: 
, backslash: \'
 echo "tab:     , new line: 
, backslash: \"
 
+" String escape sequences
+
+echo "Î -   -   - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 -   -   -  - 
 - 
 -       - \ - \" - \<C-W>"
+echo 'Î     \x1f \xf \X1F \XF \u02a4 \U000002a4      
 
         \ \" \<C-W>'
+echo "Î0 - \x1f0 - \X1F0 - \u02a40 - \U000002a40"
+
+echo $"Î -   -   - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 -   -   -  - 
 - 
 -       - \ - \" - \<C-W>"
+echo $'Î     \x1f \xf \X1F \XF \u02a4 \U000002a4      
 
         \ \" \<C-W>'
+echo $"Î0 - \x1f0 - \X1F0 - \u02a40 - \U000002a40"
+
+echo "\<C-a>"
+echo "\<*C-a>"
+echo "\<C->>"
+echo "\<*C->>"
+echo "\<C->>>"
+echo "\<*C->>>"
+
 " String interpolation
 
 echo 'Don''t highlight interpolation: {{ {1 + 2} }}'
@@ -12,3 +29,4 @@ echo $'Highlight interpolation:       {{ { string({'foo': 
'bar'}) } }}'
 echo $'Highlight interpolation:        {{ { $'nested: {{ {1 + 2} }}' } }}'
 echo $"Highlight interpolation:        {{ { string({"foo": "bar"}) } }}"
 echo $"Highlight interpolation:        {{ { $"nested: {{ {1 + 2} }}" } }}"
+
diff --git a/runtime/syntax/testdir/input/vim_key_notation.vim 
b/runtime/syntax/testdir/input/vim_key_notation.vim
new file mode 100644
index 000000000..8bc128a4d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_key_notation.vim
@@ -0,0 +1,163 @@
+" 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>
+
+<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 4627f3ddf..217995396 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -14,6 +14,7 @@
 "      2024 Jan 25 by Vim Project (WinNewPre autocommand)
 "      2024 Jan 27 by Vim Project (add foreach() function)
 "      2024 Jan 28 by Vim Project (improve line-continuation matching & string 
interpolation)
+"      2024 Feb 01 by Vim Project (improve special key matching)
 " Version:     9.0-25
 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
@@ -369,6 +370,10 @@ syn region vimString       oneline start="=+"lc=1  
skip="\\\|\+" end="+"   contains=@v
 syn match      vimString       contained       +"[^"]*\$+      skipnl 
nextgroup=vimStringCont
 syn match      vimStringCont   contained       +\(\\\|.\)\{-}[^\]"+
 syn match      vimEscape       contained       "\."
+" syn match    vimEscape       contained       +\[befnrt\"]+
+syn match      vimEscape       contained       
"\\o\{1,3}\|\[xX]\x\{1,2}\|\u\x\{1,4}\|\U\x\{1,8}"
+syn match      vimEscape       contained       "\<" contains=vimNotation
+syn match      vimEscape       contained       "\<\*[^>]*>\=>"
 
 syn region     vimString start=+$'+ end=+'+ skip=+''+ oneline 
contains=vimStringInterpolationBrace,vimStringInterpolationExpr
 syn region     vimString start=+$"+ end=+"+ oneline 
contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
@@ -504,13 +509,23 @@ syn match vimMenuBang     "!"     contained skipwhite 
nextgroup=@vimMenuList
 " Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match      vimNotation     
"\%#=1\(\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^        
:]\|cmd\|scriptcmd\|cr\|lf\|linefeed\|retu\%[rn]\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>"
 contains=vimBracket
-syn match      vimNotation     
"\%#=1\(\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"
 contains=vimBracket
-syn match      vimNotation     
"\%#=1\(\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"           
        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\|cword\|cWORD\|client\)>"         
contains=vimBracket
-syn match      vimNotation     
"\%#=1\(\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>"          
        contains=vimBracket
+syn match      vimNotation     
"\%#=1\%(\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^     
:]\|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     
"\%#=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      vimBracket contained    "[\<>]"
 syn case match
 

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rVdvj-0081O1-Qx%40256bit.org.

Raspunde prin e-mail lui