On Mon, 30 Oct 2017 00:55:07 -0000 Ralph Corderoy <ralph(a)inputplus.co.uk> wrote:
Ralph Corderoy writes:
Hi Bakul,
Regarding vi:
As an example, you can map a key to do a sequence
of operations but
you you can't then use it in conjunction with search to repeat them
over a range of lines.
You can use tail recursion in the macro because a failed search causes
it to stop. So `qqq' to start recording to register `q', and then
instantly stop recording, clearing it. Then the real definition, ending
in an execution of the empty `q'.
qq/4$^Ma2^[@qq
And finally an `@q' to kick off the recursion.
Thanks, didn't know about q. However, nvi doesn't have q. vim
does (but I rarely ever use it so when I tried the above it
failed). What I was getting at is being able to define
commands that can take one or two arguments like the bulitins,
separate from any key mapping. You need an ability to pass and
refer to arguments as well as refer to the current context.
And to be able to operate on char/word/line/para/sections. If
this machinery was accessible, may be even many of vi's
builtins can be implemented this way. E.g "d}" maps to
(delete 1para), "3dd" maps to (delete 3line) and so on.