Commit: patch 9.2.0324: 0x9b byte not unescaped in <Cmd> mapping

3 views
Skip to first unread message

Christian Brabandt

unread,
Apr 9, 2026, 3:02:24 PMApr 9
to vim...@googlegroups.com
patch 9.2.0324: 0x9b byte not unescaped in <Cmd> mapping

Commit: https://github.com/vim/vim/commit/3e2012914e0905eebfcf5de27a977ab166f93494
Author: zeertzjq <zeer...@outlook.com>
Date: Thu Apr 9 18:55:02 2026 +0000

patch 9.2.0324: 0x9b byte not unescaped in <Cmd> mapping

Problem: 0x9b byte not unescaped in <Cmd> mapping (BenYip).
Solution: Translate K_CSI to CSI like what is done in vgetc().
(zeertzjq).

fixes: #19936
closes: #19937

Signed-off-by: zeertzjq <zeer...@outlook.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/getchar.c b/src/getchar.c
index b4ef9ce82..57e407b89 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -4283,6 +4283,13 @@ getcmdkeycmd(
// to a single Esc here.
if (c1 == K_ESC)
c1 = ESC;
+
+#ifdef FEAT_GUI
+ // Translate K_CSI to CSI. The special key is only used to
+ // avoid it being recognized as the start of a special key.
+ if (c1 == K_CSI)
+ c1 = CSI;
+#endif
}

if (got_int)
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 01f2d1f94..29f42848d 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1124,7 +1124,11 @@ func Test_map_cmdkey()
call setline(1, ['some short lines', 'of test text'])
call feedkeys(":bar\<F2>x\<C-B>\"
", 'xt')
call assert_equal('"barx', @:)
- unmap! <F2>
+
+ " test for chars with 0x80 or 0x9b bytes
+ map <F2> <Cmd>let x = '洛固四最倒倀'<CR>
+ call feedkeys("\<F2>", 'xt')
+ call assert_equal('洛固四最倒倀', x)

" test for calling a <SID> function
let lines =<< trim END
@@ -1137,7 +1141,10 @@ func Test_map_cmdkey()
source Xscript
call feedkeys("\<F2>", 'xt')
call assert_equal(32, g:x)
+ unlet g:x

+ unmap <F2>
+ unmap! <F2>
unmap <F3>
unmap! <F3>
%bw!
diff --git a/src/version.c b/src/version.c
index fbe3e48eb..99a25eb7c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -734,6 +734,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 324,
/**/
323,
/**/
Reply all
Reply to author
Forward
0 new messages