diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-01-13 18:56:48 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-01-13 19:24:21 +0100 |
| commit | a1dc3da34b700adf2b2ad772ba2bf4e8fc38d4b9 (patch) | |
| tree | 0e6fc54826439b3568ae8ec156624c41b6f1a83b /sam.c | |
| parent | 53638e37fea793ce4bda93094b7103a716613181 (diff) | |
| download | vis-a1dc3da34b700adf2b2ad772ba2bf4e8fc38d4b9.tar.gz vis-a1dc3da34b700adf2b2ad772ba2bf4e8fc38d4b9.tar.xz | |
sam: remove s (substitute) command use x (extract) and c (change) instead
They are roughly equivalent, instead of
s/pattern/replacement/
to replace the first occurrence of pattern you can specify an address
to the change command:
/pattern/ c/replacement/
the only difference being that the first command is restricted to the
current line.
-+x/pattern/ c/replacement/
also restrictes matches to the current line, but performs the substitution
on the whole line not only the first match. Currently it is not possible
to only replace the n-th match as `s2/pattern/replacement/` would do
in sam(1).
A possible alternative syntax generalizing this concepts and applying
it to the `x` and `g` commands will be investigated in the future.
Global substitution as in
%s/pattern/replacement/g
can be performed using
x/pattern/ c/replacement/
Diffstat (limited to 'sam.c')
| -rw-r--r-- | sam.c | 11 |
1 files changed, 3 insertions, 8 deletions
@@ -155,7 +155,7 @@ static const CommandDef cmds[] = { "p", "Create selection covering range", CMD_NONE, NULL, cmd_print }, { - "s", "Substitute text for regexp in range", + "s", "Substitute: use x/pattern/ c/replacement/ instead", CMD_SHELL|CMD_ADDRESS_LINE, NULL, cmd_substitute }, { "v", "If range does not contain regexp, run command", @@ -1391,13 +1391,8 @@ static bool cmd_files(Vis *vis, Win *win, Command *cmd, const char *argv[], Curs } static bool cmd_substitute(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor *cur, Filerange *range) { - Buffer buf; - buffer_init(&buf); - bool ret = false; - if (buffer_put0(&buf, "s") && buffer_append0(&buf, argv[1])) - ret = cmd_filter(vis, win, cmd, (const char*[]){ argv[0], "sed", buffer_move(&buf), NULL }, cur, range); - buffer_release(&buf); - return ret; + vis_info_show(vis, "Use :x/pattern/ c/replacement/ instead"); + return false; } static bool cmd_write(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor *cur, Filerange *r) { |
