vi: stored search pattern applies to ':s'
The same stored search pattern applies to both search ('/') and search/replace (':s') operations. A search/replace operation with an empty "find" string (':s//abc/') should use the last stored search pattern, if available, and issue an error message if there is none. If the "find" string is not empty it should replace the stored search pattern. function old new delta colon 3952 4024 +72 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 72/0) Total: 72 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
0231e34427
commit
5dbbd0a6f5
12
editors/vi.c
12
editors/vi.c
@ -3100,6 +3100,18 @@ static void colon(char *buf)
|
||||
}
|
||||
len_R = strlen(R);
|
||||
|
||||
if (len_F) { // save "find" as last search pattern
|
||||
free(last_search_pattern);
|
||||
last_search_pattern = xstrdup(F - 1);
|
||||
last_search_pattern[0] = '/';
|
||||
} else if (last_search_pattern[1] == '\0') {
|
||||
status_line_bold("No previous search");
|
||||
goto ret;
|
||||
} else {
|
||||
F = last_search_pattern + 1;
|
||||
len_F = strlen(F);
|
||||
}
|
||||
|
||||
if (e < 0) { // no addr given
|
||||
q = begin_line(dot); // start with cur line
|
||||
r = end_line(dot);
|
||||
|
Loading…
Reference in New Issue
Block a user