aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/vi.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/editors/vi.c b/editors/vi.c
index d37357edd..d20481fbd 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -1128,11 +1128,16 @@ static int get_motion_char(void)
1128 int c, cnt; 1128 int c, cnt;
1129 1129
1130 c = get_one_char(); 1130 c = get_one_char();
1131 if (c != '0' && isdigit(c)) { 1131 if (isdigit(c)) {
1132 // get any non-zero motion count 1132 if (c != '0') {
1133 for (cnt = 0; isdigit(c); c = get_one_char()) 1133 // get any non-zero motion count
1134 cnt = cnt * 10 + (c - '0'); 1134 for (cnt = 0; isdigit(c); c = get_one_char())
1135 cmdcnt = (cmdcnt ?: 1) * cnt; 1135 cnt = cnt * 10 + (c - '0');
1136 cmdcnt = (cmdcnt ?: 1) * cnt;
1137 } else {
1138 // ensure standalone '0' works
1139 cmdcnt = 0;
1140 }
1136 } 1141 }
1137 1142
1138 return c; 1143 return c;