vi: support more commands for range selection

Add 'F', 'T' and '|' as commands that can be used to specify a
range for change/delete/yank operations.

function                                             old     new   delta
.rodata                                           105129  105135      +6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 6/0)                 Total: 6 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2021-03-28 13:21:08 +01:00 committed by Denys Vlasenko
parent 15f4ac3ca9
commit d4c46037a6

View File

@ -3048,7 +3048,7 @@ static int find_range(char **start, char **stop, char c)
buftype = WHOLE; buftype = WHOLE;
if (--cmdcnt > 0) if (--cmdcnt > 0)
do_cmd('j'); do_cmd('j');
} else if (strchr("^%$0bBeEfth\b\177", c)) { } else if (strchr("^%$0bBeEfFtTh|\b\177", c)) {
// These cmds operate on char positions // These cmds operate on char positions
buftype = PARTIAL; buftype = PARTIAL;
do_cmd(c); // execute movement cmd do_cmd(c); // execute movement cmd
@ -3090,8 +3090,8 @@ static int find_range(char **start, char **stop, char c)
q = end_line(q); q = end_line(q);
} }
// backward char movements don't include start position // movements which don't include end of range
if (q > p && strchr("^0bBh\b\177", c)) q--; if (q > p && strchr("^0bBFTh|\b\177", c)) q--;
*start = p; *start = p;
*stop = q; *stop = q;