<[email protected]> 於 2019年2月1日 週五 上午1:49寫道:

> I have "set revert-all-at-newline on" in ~/.inputrc. That's basically
> the only thing there, aside from some keybindings and "set bell-style
> none". I don't remember where I picked it up, it's been there for a
> long time.
>
> If I follow John's instructions with '4. Hit "down" to navigate to an
> empty place' then I don't get the observed behavior, the line I edited
> has been reverted.
>
> However, if I 'hit "up" to navigate to another line in the history'
> and then press "Enter", the edits I made to the 5566 line are not
> reverted. This only holds if the line I press "Enter" at is *above*
> the line I edited in the history, if I for example if I start with a
> new prompt, go up two history entries, edit the first one, and then
> navigate down and hit "enter" on the second one, the edit gets
> reverted. If I edit the second one, and navigate up and hit "enter" on
> the first one, the edit is still around and it shows up with an
> asterisk in the output of "history":
>
>     19991  echo a
>     19992* echo 5        # was "echo b"
>     19993  echo a
>     19994  history | tail
>
> This is with Bash 5.0.0(1).
>

Yes, I can reproduce that too. My bash version is 4.4.19.


>
> Frederick
>
> On Thu, Jan 31, 2019 at 09:54:29AM -0500, Chet Ramey wrote:
> >On 1/30/19 10:34 PM, 林自均 wrote:
> >> Hi Chet,
> >>
> >> Sorry. I realized that I didn't understand what "revert-all-at-newline"
> is
> >> doing. I checked the manual, it says:
> >>
> >>        revert-all-at-newline (Off)
> >>               If set to On, readline will undo all changes to history
> lines
> >>               before returning when accept-line is executed.  By
> default,
> >>               history lines may be modified and retain individual undo
> lists
> >>               across calls to readline.
> >>
> >> According to the description, I set it to "On" and tried the following
> >> steps in bash:
> >>
> >> 1. Type "echo 5566" and hit "enter"
> >> 2. Hit "up" to navigate to the history "echo 5566"
> >> 3. Change it to "echo 7788" and DON'T hit "enter"
> >> 4. Hit "down" to navigate to an empty place
> >> 5. Type "ls" and hit "enter"
> >> 6. Type "history | tail -n 3" and hit "enter"
> >>
> >> After that, I expected that I can see the history "echo 5566" in the
> last
> >> command since it should be reverted. However, I still see "echo 7788" in
> >> the results:
> >>
> >>     $ history | tail -n 3
> >>       501* echo 7788
> >>       502  ls
> >>       503  history | tail -n 3
> >>
> >> What did I miss? Thank you.
> >
> >It's hard to say. When I try this, I get 'echo 5566' as expected. I
> suspect
> >something about how you set revert-all-at-newline, since the `echo 7788'
> >line has a `*' preceding it, indicating that it's still got an active undo
> >list.
> >
> >--
> >``The lyf so short, the craft so long to lerne.'' - Chaucer
> >                ``Ars longa, vita brevis'' - Hippocrates
> >Chet Ramey, UTech, CWRU    [email protected]    http://tiswww.cwru.edu/~chet/
> >
> >_______________________________________________
> >Bug-readline mailing list
> >[email protected]
> >https://lists.gnu.org/mailman/listinfo/bug-readline
>
_______________________________________________
Bug-readline mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-readline

Reply via email to