Fish 3.4.0 Released
github.com
github.com
Fish occasionally has the rare syntax quirk I need to drop into bash for, but the autocomplete is so next level I simply can't use a plain shell anymore.
> fish’s command substitution syntax has been extended: $(cmd) now has the same meaning as (cmd)
I never really understood the appeal of maintaining perfect bash compatibility in your prompt. The only time I've ever needed that was because I'm copy/pasting something from the internet, which I probably shouldn't be doing at all, and at the very least not with such frequency that it effects my decision of which shell to use.
It is nice when you generally write {POSIX,Bash} scripts, and decide to quickly throw something together in the interactive shell. I find myself often putting $(), before realising that I need to remove the $ to make it valid in fish. But yeah, i think it's mostly to make shell scripts of the internet work OOTB.
rm (cat list-of-files)
just work without any quoting nightmare regardless of what kind of weird characters are in filenames (well, at least as long as they don't contain newlines). that just simplifies working on the commandline a lot.search feels more convenient although the difference seems superficial and i can still see room for improvement (i'd like to be able to type two words and then search for commands with those two words in any position)
the syntax and other things like array handling feel a lot cleaner.
multi line commandline editing felt like a great idea too although the use was not very intuitive (i think they removed that feature?)
My biggest problem with fish is that my muscle memory is still Bash/POSIX, and training it out of me wasn't working.
ZSH autocomplete plus autosuggestions plus syntax highlighting got me close enough, and the muscle memory is backwards compatible when I touch somebody else's machine or server.
I recently gave up on Fish after 3 years of using it as my primary shell. It was nice, but not nice enough to make up for all the pains of being different from POSIX shells. Glad to see Fish improving on that in a small but concrete way.
theonemind@onemindsmachine ~> echo $(badfish) fish: $(...) is not supported. In fish, please use '(badfish)'.
echo $(badfish) ^
"I know exactly what you meant. Not gonna do it."
[1] https://fishshell.com/docs/current/interactive.html#vi-mode-...
Prob'ly easiest to open the command in an editor. (C-x C-e in bash; A-v for fish) and use mouse support there.