5 ms·
Best part of fish is how little config is needed. I’m 41, married with kids. Old AF by some standards. I have zero patience with wasting my time configuring too
by mattgreenrocks 3y ago
Best part of fish is how little config is needed. I’m 41, married with kids. Old AF by some standards. I have zero patience with wasting my time configuring tooling.
zsh felt like it fought me every step of trying to configure it to be halfway decent. And a lot of zsh scripts out there aren’t exactly bulletproof. It shouldn’t matter, except for the fact that if you use the shell with any regularity you will inevitably bump into edge cases that weren’t handled well by a mishmash of user scripts whose provenance is mostly copy/paste with little understanding of why it is all needed.
Here’s my fish dotfiles:
https://github.com/mattgreen/dotfiles/tree/master/fish https://github.com/mattgreen/dotfiles/tree/master/fish
It has a submodule based plugin system (loader in conf.d), an async git prompt, my aliases, and a few env vars set. It needs no maintenance because fish provides almost everything already.
The only thing I want from fish at this point is to make async prompts first-class. They are best handled by the shell, not user code, due to the state tracking.
- ansdomizzz662 3y agoAgree with everything you said. If I didn't have to write /bin/sh compatible scripts for work, I would switch to Fish for similar reasons. From a UX point of view it's indisputably ahead of every other shell and it isn't even close, to the point I'm surprised it hasn't been adopted as the default by an OS like Mac yet. I can walk my family members through terminal things with Fish and nobody gets frustrated or quits. I can't say that about other shells.
- paradox460 3y agoYou can just put a bash shebang at the top of the script and use it just fine under fish
- nonethewiser 3y agoYour fish dotfioes are a lot more extensive than my extremely small .zshrc file. What have you configured it to do?
- xwowsersx 3y agoIf I already have zsh set up to my liking, what improvements/changes, if any, would I experience if I switched to fish?
- hiepph 3y agoI would say it has a "better" scripting languages syntax. For example, compare this in zsh: ``` case $input in "foo") echo "Input is foo" ;; "bar") echo "Input is bar" ;; ) echo "Input does not match any case" ;; esac ``` with this in Fish shell: ``` switch $input case "foo" echo "Input is foo" case "bar" echo "Input is bar" case "" echo "Input does not match any case" end ``` And it was a really small example. Fish can do much more with "simpler" and not arcane syntax. Fish also has `string` to work with string much much easier [0]. You miss `oh-my-zsh`? Fish has `oh-my-zsh` [1]. You miss integration with `fzf`? Fish also has it. One caveat is Fish is not POSIX-compatible. But I don't find it a compelling reason to not using it. Personally, I use Fish as my main shell. I do use zsh/Bash in my company though since they're more ubiquitous. [0] https://fishshell.com/docs/current/cmds/string.html https://fishshell.com/docs/current/cmds/string.html [1] https://github.com/oh-my-fish/oh-my-fish https://github.com/oh-my-fish/oh-my-fish
- xwowsersx 3y agoVery helpful, thank you. Was not aware of most of these aspects. Definitely curious to try fish now. Thanks!
- joseph 3y agoI use bash and also have no patience for configuring tooling. Your fish dotfiles are more complicated than my bash ones. I used to work on a team where many of the other engineers used fish. I never saw it doing anything I couldn't do in bash, although it looked a little fancier. But the annoying thing was when they asked me for help, and none of the commands I gave them worked in fish. It made for very slow troubleshooting sessions.
- mcjiggerlog 3y agoFish has so many more features out of the box than bash. Once you use fish for a while it's really quite painful to go back to basic bash.
- em-bee 3y agoi am using fish for more than a decade and i don't have any dotfiles for it. (do i win? :-p ) your commands to help not working in fish? that is rather surprising. i would think that fish users should be aware that shell specific things in fish are different, so they should have been able to cope and translate as needed. and it's not what you can do in fish that makes it special. it's how you do it. the syntax coloring, the completions, the syntax itself... the key thing for me is how it handles searching history and autosuggestions. i just learned how to somehow recreate this setup in zsh, and i am very curious if bash can do that too: https://news.ycombinator.com/item?id=37274207 https://news.ycombinator.com/item?id=37274207 btw i believe bash got a lot better at command completion after fish popularized the idea.
- lost_tourist 3y agoAtuin or fzf is well worth adding to fish. I only add one of those (atuin these days) and a few custom scripts to make my life a bit easier.
- subjectsigma 3y agoThe couldn’t just open a bash shell? It’s not like installing fish removes bash from your system
- lolinder 3y ago> zsh felt like it fought me every step of trying to configure it to be halfway decent. oh-my-zsh is a lifesaver here. I have a very small dotfile that delegates most of the config to omz, which I have in a bare repo that I clone onto each new machine. It took maybe an hour a few years ago to settle on the plugins I wanted and put the repo together, and each new machine now takes 5-10 minutes to get up and running.
- mattgreenrocks 3y agoOMZ is what drove me away from zsh. Fired up a prompt while working one day and it was asking if it could check for plugin updates. Really feels like OMZ doesn’t know its place when it is configured by default to do that. Tools should be quiet and keep to themselves.
- lost_tourist 3y agothat's really easy to turn off if you're happy with your setup.
- mid-kid 3y agoI went through the initial config wizard of zsh exactly once, almost a decade ago[1]. It took me maybe 5-10 minutes, and even though I don't fully understand what each command means, I haven't modified it in all this time, and it works well. I really don't think this was any significant waste of time or tedious task - I was just as free to simply ignore it. Most of the remainder of my zsh config are prompt utilities and other things I've added over the years. I don't use or really need any plugins, though if I needed, last time I tried zplug it was really easy to set up and use. [1]: https://github.com/mid-kid/config/blob/master/shell/.zshrc#L3 https://github.com/mid-kid/config/blob/master/shell/.zshrc#L...
- lylo 3y agoI use Oh My ZSH out of the box. It’s pretty cool https://ohmyz.sh/ https://ohmyz.sh/