mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.1693: Ctrl-Q not handled like Ctrl-V in replace mode
Problem: Ctrl-Q not handled like Ctrl-V in replace mode Solution: Handle Ctrl-Q like Ctrl-V closes: #12686 closes: #12684 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
db4fd29063
commit
2d63e4b3cc
@ -4767,7 +4767,7 @@ nv_replace(cmdarg_T *cap)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// get another character
|
// get another character
|
||||||
if (cap->nchar == Ctrl_V)
|
if (cap->nchar == Ctrl_V || cap->nchar == Ctrl_Q)
|
||||||
{
|
{
|
||||||
had_ctrl_v = Ctrl_V;
|
had_ctrl_v = Ctrl_V;
|
||||||
cap->nchar = get_literal(FALSE);
|
cap->nchar = get_literal(FALSE);
|
||||||
@ -5051,7 +5051,8 @@ nv_vreplace(cmdarg_T *cap)
|
|||||||
emsg(_(e_cannot_make_changes_modifiable_is_off));
|
emsg(_(e_cannot_make_changes_modifiable_is_off));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cap->extra_char == Ctrl_V) // get another character
|
if (cap->extra_char == Ctrl_V || cap->extra_char == Ctrl_Q)
|
||||||
|
// get another character
|
||||||
cap->extra_char = get_literal(FALSE);
|
cap->extra_char = get_literal(FALSE);
|
||||||
if (cap->extra_char < ' ')
|
if (cap->extra_char < ' ')
|
||||||
// Prefix a control character with CTRL-V to avoid it being used as
|
// Prefix a control character with CTRL-V to avoid it being used as
|
||||||
|
@ -3998,4 +3998,42 @@ func Test_normal_j_below_botline()
|
|||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for r (replace) command with CTRL_V and CTRL_Q
|
||||||
|
func Test_normal_r_ctrl_v_cmd()
|
||||||
|
new
|
||||||
|
call append(0, 'This is a simple test: abcd')
|
||||||
|
exe "norm! 1gg$r\<C-V>\<C-V>"
|
||||||
|
call assert_equal(['This is a simple test: abc', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$hr\<C-Q>\<C-Q>"
|
||||||
|
call assert_equal(['This is a simple test: ab', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$2hr\<C-V>x7e"
|
||||||
|
call assert_equal(['This is a simple test: a~', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$3hr\<C-Q>x7e"
|
||||||
|
call assert_equal(['This is a simple test: ~~', ''], getline(1,'$'))
|
||||||
|
|
||||||
|
if &encoding == 'utf-8'
|
||||||
|
exe "norm! 1gg$4hr\<C-V>u20ac"
|
||||||
|
call assert_equal(['This is a simple test:€~~', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$5hr\<C-Q>u20ac"
|
||||||
|
call assert_equal(['This is a simple test€€~~', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg0R\<C-V>xff WAS \<esc>"
|
||||||
|
call assert_equal(['ÿ WAS a simple test€€~~', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg0elR\<C-Q>xffNOT\<esc>"
|
||||||
|
call assert_equal(['ÿ WASÿNOT simple test€€~~', ''], getline(1,'$'))
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setline(1, 'This is a simple test: abcd')
|
||||||
|
exe "norm! 1gg$gr\<C-V>\<C-V>"
|
||||||
|
call assert_equal(['This is a simple test: abc', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$hgr\<C-Q>\<C-Q>"
|
||||||
|
call assert_equal(['This is a simple test: ab ', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$2hgr\<C-V>x7e"
|
||||||
|
call assert_equal(['This is a simple test: a~ ', ''], getline(1,'$'))
|
||||||
|
exe "norm! 1gg$3hgr\<C-Q>x7e"
|
||||||
|
call assert_equal(['This is a simple test: ~~ ', ''], getline(1,'$'))
|
||||||
|
|
||||||
|
" clean up
|
||||||
|
bw!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1693,
|
||||||
/**/
|
/**/
|
||||||
1692,
|
1692,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user