I wrote "bash style", which is not the same as "zsh style".
According to my classification, there are three type of multiline
editing models (actual keymaps are irrelevant as far as the
classification goes, of course):
* bash style: after entering a multiline command, the up arrow (or
ctrl-p) brings back the whole multiline command in one. Then it behaves
as one long line, you can move left and right within the line.
* zsh style: after entering a multiline command, the up arrow (or
ctrl-p) brings back the whole multiline command in one. Then it behaves
as an array of lines, up/down arrow moves between the lines, and
left/right arrow moves within a line. As I know, there is no way to go
back in one step from one multiline block to the other, you have to
climb up linewise. While in general it's better than bash style, this
latter behaviour could be quite painful after a ten line class
definition. Maybe not an issue for a shell, but is an issue for irb.
* pyrepl style: after entering a multiline command, ctrl-p
brings back the whole multiline command in one, Then it behaves as an
array of lines, up/down arrow moves between the lines, and left/right
arrow moves within a line. Hitting ctrl-p/ctrl-n always moves between
multiline blocks.
So the most advanced model is that of pyrepl. Tell me if I missed
something and these things are also possible in zsh (or bash).
By the way, if you don't know what pyrepl is: it's mwh's excellent
readline-a-like in python. Worth to check out, at least to play with
these features (but if I happen to do something with python, I can't
imagine that without pyrepl -- you can imagine, getting multiline
editing right is much more an issue with python than with everything
else). You find it at http://codespeak.net/pyrepl/, just unpack the
tarball, cd into the top dir, and type "python pythoni".
My idea is that pyrepl should be ported to ruby eventually. Not only it
has the mentioned features, but then we would have a totally accessible
and controllable access to readline functionality in pure ruby, and one
wouldn't need to meditate which other parts of readline should have a ruby
binding for being able to implement this idea or that.
Csaba
···
On Thu, Mar 10, 2005 at 03:28:47AM +0900, Joel VanderWerf wrote:
>* support for bash-style multiline editing (multiline commands are
>stored in one history entry)
I've wanted this for a long time! (Stupid me, I thought zsh was the only
shell with multiline editing.)