On Wed, May 22, 2019 at 04:32:00PM +0200, Ingo Schwarze wrote:
> Hi Rudolf, hi Jason,
>
> Rudolf Sykora wrote on Wed, May 22, 2019 at 02:34:31PM +0200:
> > Ingo Schwarze <[email protected]> writes:
> >> Rudolf Sykora wrote:
>
> >>> after reading the sh man page I have been wondering:
> >>> When is the line editing mode described just after the
> >>> 'COMMAND HISTORY AND COMMAND LINE EDITING' heading relevant?
>
> >> Near the beginning, the sh(1) manual page contains this paragraph:
> >>
> >> This version of sh is actually ksh in disguise. As such, it also
> >> supports the features described in ksh(1). This manual page describes
> >> only the parts relevant to a POSIX compliant sh. If portability is a
> >> concern, use only those features described in this page.
>
> > yes, I was aware of that paragraph.
>
> >> In particular, the section "COMMAND HISTORY AND COMMAND LINE EDITING"
> >> describes only those features of ksh(1) "Vi editing mode" required by
> >> POSIX. Wo do not provide a shell or an execution mode of ksh
> >> providing exactly those features and no extensions.
>
> > What I didn't know was that the mode I asked about really is,
> > essentially, the vi editing mode, and, as such, has to be explicitly
> > turned on with 'set -o vi'. I wrongly thought there are 3 modes: emacs,
> > vi, and the one I asked about (the one described in the sh man page).
> >
> >
> > So, the short answer to my question would probabbly be: the commands
> > described in the mentioned section are relevant when the vi editing mode
> > of ksh is on.
>
> Oh, now i see how the misunderstanding can arise.
>
> I think we can make that clearer with the following patch.
>
> The new phrase is not only correct with respect to what our /bin/sh
> actually does, but it also agrees with POSIX as described on
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html .
>
> While POSIX requires the shell to support vi command line editing mode,
> it does not require that mode to be the default. It only requires
> that the mode can be enabled with "set -o vi". So the new description
> both works on OpenBSD and is required to work by POSIX, which is
> exacltly what we intend to describe in this page.
>
> OK?
> Ingo
>
hi.
this seems fair enough. one question:
>
> Index: sh.1
> ===================================================================
> RCS file: /cvs/src/bin/ksh/sh.1,v
> retrieving revision 1.151
> diff -u -r1.151 sh.1
> --- sh.1 16 Dec 2018 13:08:35 -0000 1.151
> +++ sh.1 22 May 2019 14:27:57 -0000
> @@ -866,7 +866,11 @@
> either internally in memory or in a file,
> as determined by
> .Dv HISTFILE .
> -The command line and all the commands in command history
> +When
> +.Cm vi
> +command line editing mode is enabled with the option
> +.Ic set Fl o Cm vi ,
i'd prefer
When
.Cm vi
command line editing mode is enabled
.Pq set -o vi ,
you may hate that, so i'd settle for
.Pq Ic set Fl o Cm vi ,
it's still shorter.
jmc
> +the command line and all the commands in command history
> can be edited using commands similar to those of
> .Xr vi 1 .
> .Pp