@@ -125,6 +125,24 @@ function! s:test_on_visual_mode_kept(type, cases)
125125endfor
126126endfunction
127127
128+ function ! s: test_on_visual_mode_manually_repeated (type , cases)
129+ for [il ,ic ,c ,d , ebl, ebc, eel, eec, eyanked]in a: cases
130+ call cursor (il ,ic )
131+ Expect [il ,ic ]== getpos (' .' )[1 :2 ]
132+ let @0 = ' some random string'
133+ " If Visual mode is not kept by the move command, nothing is yanked.
134+ silent ! normal ! v
135+ for i in range (c )
136+ execute ' silent! normal' printf (" [%s%s]" ,a: type ,d )
137+ endfor
138+ silent ! normal ! y
139+ let [vbl, vbc]= getpos (" '<" )[1 :2 ]
140+ let [vel, vec]= getpos (" '>" )[1 :2 ]
141+ Expect [vbl, vbc]== getpos (' .' )[1 :2 ]
142+ Expect [il ,ic ,c ,d , vbl, vbc, vel, vec,@0 ]== [il ,ic ,c ,d , ebl, ebc, eel, eec, eyanked]
143+ endfor
144+ endfunction
145+
128146function ! s: test_on_operator_pending_mode (type , cases)
129147for [il ,ic ,c ,d , ebl, ebc, eel, eec, eyanked]in a: cases
130148call cursor (il ,ic )
@@ -229,6 +247,7 @@ describe '"move-*"'
229247 it' works in Visual mode'
230248call s: test_on_visual_mode_basic (' p' ,s: cases )
231249call s: test_on_visual_mode_kept (' p' ,s: cases )
250+ call s: test_on_visual_mode_manually_repeated (' p' ,s: cases )
232251end
233252
234253 it' works in Operator-pending mode'
@@ -244,6 +263,7 @@ describe '"move-*"'
244263 it' works in Visual mode'
245264call s: test_on_visual_mode_basic (' f' ,s: cases )
246265call s: test_on_visual_mode_kept (' f' ,s: cases )
266+ call s: test_on_visual_mode_manually_repeated (' f' ,s: cases )
247267end
248268
249269 it' works in Operator-pending mode'