updated for version 7.0074
diff --git a/src/normal.c b/src/normal.c
index ec38db2..2075766 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -651,12 +651,17 @@
 	buf[0] = c;
 	buf[1] = NUL;
 # endif
-	/* Fake a "c"hange command.
+	/* Fake a "c"hange command.  When "restart_edit" is set (e.g., because
+	 * 'insertmode' is set) fake a "d"elete command, Insert mode will
+	 * restart automatically.
 	 * Insert the typed character in the typeahead buffer, so that it will
 	 * be mapped in Insert mode.  Required for ":lmap" to work.  May cause
 	 * mapping a character from ":vnoremap"... */
 	(void)ins_typebuf(buf, REMAP_YES, 0, !KeyTyped, FALSE);
-	c = 'c';
+	if (restart_edit != 0)
+	    c = 'd';
+	else
+	    c = 'c';
     }
 #endif