diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 31817676e1..32fa517324 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2927,6 +2927,11 @@ char *getcmdkeycmd(int promptc, void *cookie, int indent, bool do_concat) } c1 = TO_SPECIAL(c1, c2); } + if (c1 == Ctrl_V) { + // CTRL-V is followed by octal, hex or other characters, reverses + // what AppendToRedobuffLit() does. + c1 = get_literal(true); + } if (got_int) { aborted = true; diff --git a/test/old/testdir/test_mapping.vim b/test/old/testdir/test_mapping.vim index b695c9e29b..ec57bea59e 100644 --- a/test/old/testdir/test_mapping.vim +++ b/test/old/testdir/test_mapping.vim @@ -1084,6 +1084,11 @@ func Test_map_cmdkey() unmap unmap! %bw! + + " command line ending in "0" is handled without errors + onoremap ix eval 0 + call feedkeys('dix.', 'xt') + ounmap ix endfunc " text object enters visual mode