diff options
author | Ron Yorston | 2021-04-15 12:03:22 +0100 |
---|---|---|
committer | Denys Vlasenko | 2021-04-15 13:09:12 +0200 |
commit | d6e653d667bc1eb343014508a8bddb3dd4945f78 (patch) | |
tree | c628220816cde751484d83c9b5773fe504243f58 /editors/vi.c | |
parent | 38ae0f3e3e9490c5b8cc3b917c2d896404afddbe (diff) | |
download | busybox-d6e653d667bc1eb343014508a8bddb3dd4945f78.zip busybox-d6e653d667bc1eb343014508a8bddb3dd4945f78.tar.gz |
vi: don't move cursor when yanking whole lines
When whole lines are yanked using 'yy' or 'Y' vi doesn't change the
cursor position. Make BusyBox vi do the same.
function old new delta
do_cmd 4776 4786 +10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 10/0) Total: 10 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors/vi.c')
-rw-r--r-- | editors/vi.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/editors/vi.c b/editors/vi.c index d20481f..780c812 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -3934,6 +3934,7 @@ static void do_cmd(int c) # endif if (c == 'y' || c == 'Y') yf = YANKONLY; + save_dot = dot; #endif // determine range, and whether it spans lines buftype = find_range(&p, &q, c); @@ -3951,6 +3952,11 @@ static void do_cmd(int c) dot_begin(); dot_skip_over_ws(); } +#if ENABLE_FEATURE_VI_YANKMARK + else /* (c == 'y' || c == 'Y') */ { + dot = save_dot; + } +#endif } // if CHANGING, not deleting, start inserting after the delete if (c == 'c') { |