Hi! I'm filing this separately from #29157, because I think that issue got a bit overloaded with multiple eshell problems and is very hard to follow. I recently noticed the changes in #29157, and I'm disappointed that we came to the conclusion to disable history expansion completely. I find it's rather useful, especially for things like: $ mv one.txt two.txtt # whoops! $ mv !!:$ two.txt This is preferred (in my opinion) over lisp functions to keep muscle memory working between shells. If anything, I would suggest disabling quick substitution (as I don't find it more useful than using history directly most of the time) I've created a patch to try to fix the bug found in #29157, which was: > echo $PATH | sed "s/[^o]foo[^o]/bar/g" > Unknown predicate character ‘b’ The fix is rather simple, it simply limits the quick substitution to the start of the line only (as observed in bash, as Andreas noted in the previous thread). I hope that we reconsider the decision to disable history expansion by default, it's a nice feature of eshell (which I have another patch I would like to submit later to try to expand it's functionality a bit more). Please let me know if you think this is a poor way of solving this issue (or if anything else seems wrong or missing), and I'll try to follow up. Thanks, -Jay