Faster, simpler and nicer to use, in my limited experience of ZSH. A focus on great defaults rather than expandability. But then I’m somewhat biased, having settled on Fish over a decade ago. ZSH might be better now.
Can you elaborate on "simpler and nicer to use"? The last time I've seen a description the differences, they were just minor simplifications of bashisms, like iterating an array, which don't simplify the experience significantly.
I switched to Fish about a decade ago too. "simpler and nicer to use" is a good summary, but to flesh it out a bit from my perspective: given how much time I spend in the terminal, the every day ergonomics are quite important to me. I used to use ZSH with oh-my-zsh and a bunch of plugins, over the years this got slower and slower, and the maintenance burden got annoying. It got to a point where opening a new terminal window would take maybe 5 seconds before it was ready to use. I tried Fish one day, and literally everything I'd customised ZSH to do came for free out of the box, no plugins, no maintenance. Startup time was instant. I now use Fish with a Starship prompt and I'm never going back.
The speed impact is one reason I've never liked oh-my-zsh and similar for other shells.
It's also why I love starship https://starship.rs/. Lots of plug-ins to customise what I want at the prompt, and all of it native compiled such that it executes in milliseconds.
Yeah, that great we have a lot of different opinion on thing and tools. For personal use i would try it. But for server side we as usual stick to default shipment, vim, zsh etc
> As my understaning it bring bunch of features out of box, syntax highligh, tab completion etc.?
I think this is a good summary. The best thing about fish is that you don't need to install any plugins to get all of the nice things that other people put a lot of effort into configuring: tab completion, syntax highlighting, and so on. It's also just really comfortably ergonomic in a way that is hard to describe unless you've used it - multiline commands automatically update their indentation as you type, completions for most common programs come pre-bundled, you can easily set environment variables globally across all of your shell instances without fiddling with config files or reloading your shells, and so on.
18 comments
[ 1.9 ms ] story [ 54.3 ms ] threadAs my understaning it bring bunch of features out of box, syntax highligh, tab completion etc.?
It's also why I love starship https://starship.rs/. Lots of plug-ins to customise what I want at the prompt, and all of it native compiled such that it executes in milliseconds.
> But for server side we as usual stick to default shipment, vim, zsh etc
And macOS isn't a server OS.
https://github.com/fish-shell/fish-shell/issues/1786
It is worth mentioning that exists `<()` and is implemented via a helper command `psub`: https://fishshell.com/docs/current/cmds/psub.html
I think this is a good summary. The best thing about fish is that you don't need to install any plugins to get all of the nice things that other people put a lot of effort into configuring: tab completion, syntax highlighting, and so on. It's also just really comfortably ergonomic in a way that is hard to describe unless you've used it - multiline commands automatically update their indentation as you type, completions for most common programs come pre-bundled, you can easily set environment variables globally across all of your shell instances without fiddling with config files or reloading your shells, and so on.
- Nobody really likes C++ or CMake, and there's no clear path for getting off old toolchains. Every year the pain will get worse.
- C++ is becoming a legacy language and finding contributors in the future will become difficult, while Rust has an active and growing community.
- Rust is what we need to turn on concurrent function execution.
- Being written in Rust will help fish continue to be perceived as modern and relevant.
It’s been pretty successful on the whole as the goal hasn’t been a big rewrite, but a module-by-module port, which will serve as a new baseline.
https://www.nushell.sh