@@ -773,6 +773,56 @@ def test_vi_visual_line_copy():
773773 assert  (result .text  == 
774774 '-line1\n -line2\n -line3\n -line4\n -line2\n -line3\n -line2\n -line3\n -line5\n -line6' )
775775
776+ def  test_vi_character_delete_after_cursor ():
777+  " Test 'x' keypress. " 
778+  feed  =  partial (_feed_cli_with_input , editing_mode = EditingMode .VI ,
779+  multiline = True )
780+ 
781+  # Delete one character. 
782+  result , cli  =  feed ('abcd\x1b Hx\r ' )
783+  assert  result .text  ==  'bcd' 
784+ 
785+  # Delete multiple character.s 
786+  result , cli  =  feed ('abcd\x1b H3x\r ' )
787+  assert  result .text  ==  'd' 
788+ 
789+  # Delete on empty line. 
790+  result , cli  =  feed ('\x1b o\x1b o\x1b ggx\r ' )
791+  assert  result .text  ==  '\n \n ' 
792+ 
793+  # Delete multiple on empty line. 
794+  result , cli  =  feed ('\x1b o\x1b o\x1b gg10x\r ' )
795+  assert  result .text  ==  '\n \n ' 
796+ 
797+  # Delete multiple on empty line. 
798+  result , cli  =  feed ('hello\x1b o\x1b o\x1b gg3x\r ' )
799+  assert  result .text  ==  'lo\n \n ' 
800+ 
801+ 
802+ def  test_vi_character_delete_before_cursor ():
803+  " Test 'X' keypress. " 
804+  feed  =  partial (_feed_cli_with_input , editing_mode = EditingMode .VI ,
805+  multiline = True )
806+ 
807+  # Delete one character. 
808+  result , cli  =  feed ('abcd\x1b X\r ' )
809+  assert  result .text  ==  'abd' 
810+ 
811+  # Delete multiple character. 
812+  result , cli  =  feed ('hello world\x1b 3X\r ' )
813+  assert  result .text  ==  'hello wd' 
814+ 
815+  # Delete multiple character on multiple lines. 
816+  result , cli  =  feed ('hello\x1b oworld\x1b gg$3X\r ' )
817+  assert  result .text  ==  'ho\n world' 
818+ 
819+  result , cli  =  feed ('hello\x1b oworld\x1b 100X\r ' )
820+  assert  result .text  ==  'hello\n d' 
821+ 
822+  # Delete on empty line. 
823+  result , cli  =  feed ('\x1b o\x1b o\x1b 10X\r ' )
824+  assert  result .text  ==  '\n \n ' 
825+ 
776826
777827def  test_vi_character_paste ():
778828 feed  =  partial (_feed_cli_with_input , editing_mode = EditingMode .VI )
0 commit comments