aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-06-25 19:33:31 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2021-06-27 13:36:49 +0200
commit5dbbd0a6f52befe6bc57baf97d39168e595197f1 (patch)
treeb9a0c98dbcda77c15cfb327c8282643734566305
parent0231e344273aafd02097eb71851bc7a078da5400 (diff)
downloadbusybox-w32-5dbbd0a6f52befe6bc57baf97d39168e595197f1.tar.gz
busybox-w32-5dbbd0a6f52befe6bc57baf97d39168e595197f1.tar.bz2
busybox-w32-5dbbd0a6f52befe6bc57baf97d39168e595197f1.zip
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>
-rw-r--r--editors/vi.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/editors/vi.c b/editors/vi.c
index 38ce1fdf0..f0bbc9518 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3100,6 +3100,18 @@ static void colon(char *buf)
3100 } 3100 }
3101 len_R = strlen(R); 3101 len_R = strlen(R);
3102 3102
3103 if (len_F) { // save "find" as last search pattern
3104 free(last_search_pattern);
3105 last_search_pattern = xstrdup(F - 1);
3106 last_search_pattern[0] = '/';
3107 } else if (last_search_pattern[1] == '\0') {
3108 status_line_bold("No previous search");
3109 goto ret;
3110 } else {
3111 F = last_search_pattern + 1;
3112 len_F = strlen(F);
3113 }
3114
3103 if (e < 0) { // no addr given 3115 if (e < 0) { // no addr given
3104 q = begin_line(dot); // start with cur line 3116 q = begin_line(dot); // start with cur line
3105 r = end_line(dot); 3117 r = end_line(dot);