[HN Gopher] Fish 3.4.0
       ___________________________________________________________________
        
       Fish 3.4.0
        
       Author : denisw
       Score  : 165 points
       Date   : 2022-03-19 14:37 UTC (8 hours ago)
        
 (HTM) web link (fishshell.com)
 (TXT) w3m dump (fishshell.com)
        
       | deagle50 wrote:
       | Does anyone know how to disable the bright red color when you
       | first start typing a word? I find it very distracting (specially
       | on over-saturated wide gamut displays) and went back to zsh
       | because of it.
        
       | pkilgore wrote:
       | Any other long-suffering bash user switched to fish and never
       | looked back? Why? Have you switched and ended up coming back to
       | bash? Why?
       | 
       | - Long-suffering bash user
        
         | johnny22 wrote:
         | never went back to bash. been using fish for at least 4 years
         | at this point. I don't actually recall when.
        
         | darrenf wrote:
         | ~30 year bash/sh user here (glossing over the regrettable,
         | mercifully brief dalliances with csh and ksh). I can't claim to
         | be long suffering, because I (still) enjoy using bash.
         | 
         | In December just gone I gave up on macOS after 17 years and
         | switched to Linux. Thought I'd take the opportunity to try a
         | new shell and went for fish (though I still use bash on certain
         | remote hosts for a variety of reasons).
         | 
         | autocomplete and colours/highlighting are more than enough to
         | keep me using it. I really enjoy them. But...
         | 
         | I don't yet love how history works. Four months in, I still
         | can't get used to not having ctrl-r.
         | 
         | I miss the symmetry of `do ... done` in loop syntax, finding
         | `for ... end` jarring.
         | 
         | The lack of !! really grates sometimes. I was going to say I
         | miss `^x^y` last command modification, but actually I can't
         | recall trying it since switching.
         | 
         | `VAR=x cmd ...` doesn't seem to work quite how I expect. I have
         | an alias/function to perform SSO login to AWS, which expands to
         | `BROWSER=otherfunc aws sso login` - otherfunc itself expanding
         | to `firefox -P workprofile`. This stubbornly opens a Firefox
         | tab in some random window, regardless of profile - despite
         | otherfunc on its own always working. I did not, IIRC, have this
         | trouble with bash.
        
         | socialdemocrat wrote:
         | I have used fish for so many years I have lost track. Maybe 10
         | years. Occasionally I need bash and then I just launch a bash
         | shell. But I have gotten fish to work with pretty much
         | everything I need without problems whether prompts or Python
         | environments.
         | 
         | Fish excels as an everyday interactive shell. I never program
         | shell scripts. I write Julia code whenever something equivalent
         | of a shell script is needed. Before that I often used Go.
        
           | dividedbyzero wrote:
           | What do you use for Python environments? I couldn't get that
           | to work properly the last time I tried.
        
             | drcongo wrote:
             | I've been using Fish for years and spend my entire day
             | working with Python. Python's virtualenv has an
             | `activate.fish` command, I've never had any problems with
             | it. Additionally, we have a ton of internal tooling built
             | in a fabfile, so I've written a couple of snippets of fish
             | that automatically activate that .venv (Poetry managed)
             | whenever I cd into a directory that has one, and also
             | expands a bunch of env vars into the shell session. I've
             | also got this feature request in on the virtualenv repo in
             | the hope that one day we can have activate.fish emit an
             | event - https://github.com/pypa/virtualenv/issues/1456
        
         | cube2222 wrote:
         | Switched and never came back. Always recommend people to use
         | fish if they're not the "customize everything everywhere to my
         | liking" type.
         | 
         | The defaults of fish are great and common tasks are simple. The
         | for loop syntax was so intuitive I got it right the first time
         | without checking Google (which I have to do every time I write
         | a bash for loop).
         | 
         | Not much more to say I think.
        
           | abdusco wrote:
           | Very true. As another long-time fish user, it gets a lot of
           | things right. But I still write scripts in Bash if I need to
           | share it with someone else.
           | 
           | These days, I'm playing with xonsh[0]. If I don't use the
           | "standart" shell bash, I might as well use something that's
           | integrated with Python.
           | 
           | [0]: https://xon.sh/tutorial.html
        
           | mmmmmbop wrote:
           | > Always recommend people to use fish if they're not the
           | "customize everything everywhere to my liking" type.
           | 
           | Fully agree. It feels like fish is the Apple of shells, in
           | that regard. Unless you really love to tinker with your
           | shell, the great defaults and great UX make it really easy to
           | recommend.
        
             | themodelplumber wrote:
             | Is Fish difficult to customize? Just curious since I do
             | tend to customize everything to some degree to fit my
             | personal prefs.
        
               | artificial wrote:
               | Very easy especially with omf, has a web interface for
               | terminal schemes. I think you'll be right at home.
        
               | davewongillies wrote:
               | I'm a previous bash user who now uses fish and loves to
               | customize everything, and compared to bash, customizing
               | fish is a joy. Its so much easier to do, using oh-my-fish
               | brings a great selection of plugins (admittedly lots of
               | them are inspired or clones of oh-my-zsh plugins) and
               | writing plugins is a breeze as well.
        
               | mmmmmbop wrote:
               | It's not difficult to customize. IMO, it's actually
               | easier to customize yourself than bash/zsh because I find
               | the fish syntax much more natural than bash, but YMMV.
               | 
               | That said, I believe that zsh has a bigger community, and
               | therefore most likely a richer ecosystem with more
               | plugins. For example, oh-my-zsh has 142k stars, and oh-
               | my-fish has 8k stars.
               | 
               | However, even with the rich ecosystem of plugins, I
               | wasn't able to get my zsh to be as pleasant to use as my
               | fish, where I only have some self-made customizations
               | (not even using oh-my-fish).
               | 
               | But if having lots of plugins to choose from is important
               | to you, zsh may be a better choice.
        
             | nirvdrum wrote:
             | I find myself customizing fish way more than I ever did
             | with Bash. Writing custom completions is easy and I find
             | the scripting syntax a lot nicer. Combining the two is
             | really powerful. Granted, fish ships with a ton of
             | completions out of the box so you may not need to write
             | your own.
        
               | davewongillies wrote:
               | And if some tool you use doesn't have completions,
               | writing completions for fish are infinitely easier than
               | bash
        
               | robin_reala wrote:
               | If anyone is interested in comparing and contrasting, the
               | Standard Ebooks tooling has the same completions for:
               | 
               | Bash: https://github.com/standardebooks/tools/blob/master
               | /se/compl...
               | 
               | ZSH: https://github.com/standardebooks/tools/blob/master/
               | se/compl...
               | 
               | Fish: https://github.com/standardebooks/tools/blob/master
               | /se/compl...
        
         | synergy20 wrote:
         | I stay with bash due to its 100% availability on all systems I
         | use, with https://github.com/akinomyoga/ble.sh I got all the
         | auto-complete I need too.
        
         | em-bee wrote:
         | my answer to the same question a few days ago:
         | https://news.ycombinator.com/item?id=30666837
        
         | theshrike79 wrote:
         | I tried bash first, with every bell and whistle added. I tried
         | all the scripts and tuned my .bashrc and .bash_profile and PS1
         | and all the crap. It was a huge chore.
         | 
         | Then I tried switching to zsh with oh-my-zsh and all that. 42
         | million tunable bits and I still didn't get it to my liking.
         | 
         | Then I found Fish and 95% of the stuff was good enough out of
         | the box. The only things I've really added was Starship[0] as a
         | prompt - again good enough with pretty much zero configuration
         | and fzf[1] for history search.
         | 
         | Now I use it everywhere, synced via Homeshick[2]
         | 
         | I still use bash to write shell scripts that aren't long enough
         | to be converted to Python though.
         | 
         | [0] https://starship.rs [1] https://github.com/jethrokuan/fzf
         | [2] https://github.com/andsens/homeshick
        
         | ripley12 wrote:
         | Switched and came back after about 3 years (to zsh).
         | 
         | Fish is nice in many ways, but it kinda lives up to its "A
         | command line for the 90's" slogan. It's better than what came
         | before it, but I'm not sure it's better _enough_. Using a non-
         | POSIX shell can feel like death by 1000 cuts sometimes, and I
         | wasn 't sure the benefits of Fish were worth the cost. Also,
         | scripting feels like a bit of an afterthought in Fish and
         | that's a very important part of a shell to me.
         | 
         | These days I'm feeling optimistic about Nushell; it's not quite
         | ready for most people to use as a daily driver, but it's
         | getting there and it has a much stronger value proposition than
         | Fish.
        
           | revscat wrote:
           | My other was similar: bash, zsh, fish, back to zsh. The
           | ecosystem around zsh is just so much more robust. Fish is
           | better out of the box than zsh, but once you start
           | customizing fish loses its shine.
        
           | edgyquant wrote:
           | I'm a long term bash user, I tried fish and just couldn't get
           | used to it (death by 1000 cuts is a great way to put it.)
           | I've recently settled on zsh but I still prefer bash's basic
           | history (e.g. just pressing up without typing any command)
        
             | nyuszika7h wrote:
             | > I still prefer bash's basic history (e.g. just pressing
             | up without typing any command)
             | 
             | Huh? You can do the same in zsh.
        
         | mmmmmbop wrote:
         | I switched to fish about 7 years ago and never looked back. It
         | feels so much more natural to use than bash. With all the hype
         | (and better ecosystem) of zsh, I once genuinely tried using
         | zsh, but eventually came crawling back to fish.
         | 
         | Using just plain bash seems so foreign to me. Having no FZF
         | command history search or intelligent auto-completion would
         | kill my productivity. I'd say it's as essential to my workflow
         | as tmux.
         | 
         | The only major downside of fish, in my experience, is the
         | incompatibility with bash scripts. Sometimes it's a hassle to
         | rewrite those to be fish-compliant. But honestly, this is
         | something I run into once in a blue moon. On the flip side, the
         | simple fish syntax really encourages me to write my own fish
         | functions, whereas with bash I was always dreading writing bash
         | scripts.
         | 
         | Personally, I can fully recommend fish. In my experience,
         | switching to it is not even painful at all, not like vim which
         | took me quite some dedication to get through the learning curve
         | (switched from Sublime Text).
        
       | yewenjie wrote:
       | People who have replaced fish with something else (other than
       | bash and zsh) after using it for a significant time, to what and
       | why?
        
         | progforlyfe wrote:
         | I used fish for a few years and finally switched to zsh. I
         | wouldn't consider myself a super shell power user, so
         | eventually I got tired of trying to make standard things work
         | (such as nvm and similar helper utilities). Yes there are
         | workarounds and solutions but I just wanted plug and play for
         | stuff I'd find in the wild. Turns out that zsh with ohmyzsh has
         | much of fish's functionality (that I utilized anyway), so I'm
         | happy with it.
        
           | dorianmariefr wrote:
           | yeah nvm is a pain on fish, I ended up using the real nvm
           | with:                   fisher install FabioAntunes/fish-nvm
           | edc/bass
           | 
           | https://github.com/FabioAntunes/fish-nvm
        
           | daveidol wrote:
           | FYI most of these things are available as part of oh-my-
           | fish[1]
           | 
           | [1] https://github.com/oh-my-fish/oh-my-fish#readme
        
       | dorianmariefr wrote:
       | I wish capistrano would work with fish but I will need to
       | separate the capistrano user and my user on the server anyway
        
       | robin_reala wrote:
       | Previously discussed:
       | https://news.ycombinator.com/item?id=30660587
        
       | vzaliva wrote:
       | What about Oh My Fish https://github.com/oh-my-fish/oh-my-fish
       | Has it been upgated to support new version?
        
         | tarellel wrote:
         | I love using oh-my-fish but I honestly think a lot of people
         | have moved to using fisher. Because of OMF's lack of updates.
         | 
         | https://github.com/jorgebucaran/fisher
        
       | drcongo wrote:
       | I used OhMyZsh for years with the Agnoster power line theme and
       | over the years it got slower and slower. Tried Fish about 6 years
       | ago and immediately spent the rest of the day tweaking an
       | Agnoster theme to my liking because everything about it was
       | better than Zsh and waaaay faster. My fork is here [0] for anyone
       | interested, though the readme and screenshots are from the
       | original.
       | 
       | [0] https://github.com/drcongo/agnoster
        
         | ratorx wrote:
         | I'd say that's more a OhMyZsh problem than a ZSH problem.
         | There's definitely faster and better frameworks/plugin
         | managers.
         | 
         | However the crux of the issue is that a bunch of the neat
         | features are built into default Fish vs being behind plugins in
         | ZSH.
         | 
         | I still think (with sufficient effort), ZSH is the best (and I
         | think configurable to be faster than default Fish with
         | equivalent features), but Fish is the best out of the box
         | experience.
        
       | tartoran wrote:
       | I love fish. It helped me get into linux terminal. It really
       | accelerates the learning curve and turbocharges explorability. I
       | wish more TUI types of apps took hints from fish's UX
        
       | m1keil wrote:
       | "Autosuggestions can now be turned off"
       | 
       | Finally. I should give it a try now.
        
       | gcoguiec wrote:
       | I feel productive with my Alacritty + Fish (with a starship.rs
       | prompt) setup. I can even swap the shell, and I get the same user
       | experience.
       | 
       | It's consistent and blazing fast, and that's all I ask.
        
       | andrewshadura wrote:
       | Unfortunately, mc has been broken since 3.2.0 IIRC and nobody's
       | working on it.
        
         | ridiculous_fish wrote:
         | Curious what issue you're seeing with mc? There was an mc fix
         | in fish 3.2.1 [1] but we know of at least one remaining issue
         | [2].
         | 
         | 1: https://github.com/fish-shell/fish-shell/issues/7769
         | 
         | 2: https://github.com/fish-shell/fish-shell/issues/6767
        
       | kytazo wrote:
       | Just loving every single bit of it since I switched to it. Had a
       | couple of thoughts of migrating to zsh mostly because its more
       | POSIX compliant but it doesn't look like such a valid argument as
       | time passes by
        
         | RobertMiller wrote:
         | I think POSIX compliance of interactive shells is completely
         | irrelevant. POSIX shells are relevant when you're writing
         | scripts that will be distributed, but there's no reason that
         | needs to be done with the same shell you use interactively. I
         | use fish presently and zsh before that for nearly 15 years, but
         | my shell scripts have always started with #!/bin/sh
         | 
         | It's not like fish installs to /bin/sh, nor are /bin/sh scripts
         | executed using fish just because your interactive shell is
         | fish. I guess these are the two misconceptions the common
         | worries are based on?
        
           | kytazo wrote:
           | Yeah I agree POSIX compliance is irrelevant in the
           | interactive usage context, the only issue that rose here and
           | there were command substitutions mostly, something which this
           | release takes care of.
           | 
           | The sole reason I was contemplating switching to zsh in
           | regards to POSIX was the fact my shell scripting knowledge is
           | rather shallow and I could perhaps improve it a bit while
           | working on functions I write for personal interactive use..
           | Needless to say I've written them in fish haha.. If my
           | assumptions are right what I need to master is combining
           | properly the coreutils and the general mentality of piping
           | things from one command to another etc - I could be wrong tho
        
           | socialdemocrat wrote:
           | Same here, totally don't get the whole compatibility
           | argument. If I need to script anything of any complexity I
           | use a more proper programming language anyway such as Python,
           | Ruby, Julia or maybe even Go as it makes distributing
           | apps/scripts real easy.
        
           | Osiris wrote:
           | Same. I've been using fish forever. Scripts that use sh or
           | bash still work fine.
           | 
           | The fish scripting language is much easier to read and write
           | than bash (for someone that doesn't write many scripts). So
           | for local scripts I use it but for anything shared it's still
           | bash scripts.
        
         | lalwanivikas wrote:
         | My company has default shell as zsh so every tool assumes that.
         | How can I switch to fish in such an environment?
        
           | RobertMiller wrote:
           | You can execute zsh scripts from a fish command line, or any
           | other. Where is the problem?
        
             | kefyras wrote:
             | Fish doesn't source /etc/profile{,.d}, so it won't pickup
             | additional PATHs and other env vars that packages set
             | there, for example.
             | 
             | A workaround is launching it from .bashrc/.zshrc or
             | terminal. https://wiki.archlinux.org/title/Fish#Setting_fis
             | h_as_intera...
        
               | artificial wrote:
               | Here's some solutions, I've written a few scripts for
               | projects to pass aws okta tokens. Absolutely worth it to
               | use fish IME. YMMV depending on complexity
               | https://superuser.com/questions/446925/re-use-profile-
               | for-fi...
        
           | razemio wrote:
           | There should be no issue. Just execute scripts with zsh if it
           | isn't compatible. Inside fish you could just do the
           | following: $ zsh ./script.sh
        
           | klysm wrote:
           | Doesn't sound like it would really be worth it. Zsh is at
           | least better than bash.
        
           | ornornor wrote:
           | Isn't the first line a shebang that would tell which she'll
           | to run it with?
           | 
           | `#! /usr/bin/env zsh`
        
       | DrBenCarson wrote:
       | Wanted to love/daily-drive fish but the incompatibility with
       | bash/zsh made things more troublesome than I had the time and
       | patience for.
       | 
       | Exciting to see it inching toward POSIX compatibility
        
         | [deleted]
        
         | DavideNL wrote:
         | You can just use/run all bash and zsh scripts from your fish
         | shell...
        
       | msoad wrote:
       | Fish is so great! I'm a user for 7 years. The autocomplete
       | suggestions are so helpful!
       | 
       | However, since using Github Copilot I'm expecting a bit smarter
       | suggestions. I wonder if anyone has tried putting a GPT-3 like
       | engine behind command line autocomplete suggestions. Or maybe the
       | Copilot team offer a sort of API for this.
        
         | O_H_E wrote:
         | Yup, right here https://www.youtube.com/watch?v=j0UnS3jHhAA
         | 
         | I remember that I was able to replicate this last year, not
         | 100% sure why I'm not using it daily tho. :D
         | 
         | One thing to note, the limited waitinglist he talks about in
         | the video is done, and now you can sign up and "pay" for
         | ~NLP~...ahem _CLP_ tokens as OpenAI calls them
        
         | Trasmatta wrote:
         | Not GPT-3, but you may be interested in this:
         | https://github.com/cantino/mcfly
        
           | Tijdreiziger wrote:
           | Anybody on HN who's using this and wants to share their
           | experience? It looks interesting, how does it compare against
           | fish?
        
             | Trasmatta wrote:
             | You can use it with fish. Here are a couple of previous
             | threads on it:
             | 
             | https://news.ycombinator.com/item?id=18593015
             | https://news.ycombinator.com/item?id=23758138
        
         | whazor wrote:
         | In VSCode you can have a notebook with shell functionality,
         | there copilot works.
        
       | thecosmicfrog wrote:
       | > fish's command substitution syntax has been extended: $(cmd)
       | now has the same meaning as (cmd) but it can be used inside
       | double quotes
       | 
       | That's pretty big news for a more POSIX-like behaviour!
        
         | Osiris wrote:
         | They did it also because with the old syntax it was unintuitive
         | how to put commands inside quotes. It borrowed the new syntax
         | from bash but it wasn't ONLY to be more bash compatible. It
         | solved a real fish shell problem also.
        
           | cpach wrote:
           | Nitpick: The $(...) syntax was not invented by GNU, it was
           | invented by Kenneth Almquist at the University of Washington.
           | 
           | https://www.in-ulm.de/~mascheck/various/ash/#original
        
         | Macha wrote:
         | They've been doing these small improvements to support more
         | standard syntax for a while and I approve. (e.g. 3.0 added
         | &&/|| as aliases for and/or, 3.1 added &> redirection syntax,
         | and "X=Y foo" for setting variables for one command)
        
         | msoad wrote:
         | Copy-pasting little snippets with `"$(command)"` in them has
         | always been a bit of annoyance. Happy to see it improving!
        
         | aladine wrote:
         | Agreed with it. It is the highlight of this release.
        
       | brimstedt wrote:
       | Anyone know of a good comparison between the different shells?
        
         | RobertMiller wrote:
         | There are several feature comparison tables for numerous shells
         | here:
         | https://en.wikipedia.org/wiki/Comparison_of_command_shells
        
         | ducktective wrote:
         | Here is my TLDR:
         | 
         | Writing scripts: #!/usr/bin/env bash (or #!/usr/bin/env sh for
         | POSIX-compliance)
         | 
         | Use fish for interactive shell. It's faster than zsh
         | 
         | Zsh seem to have more plugins
        
       | lsllc wrote:
       | See last weeks discussion:
       | 
       | https://news.ycombinator.com/item?id=30660587
        
       | petepete wrote:
       | I've just taken Fish for a test drive and I'm really impressed. I
       | use the Starship prompt in Zsh and it worked out of the box in
       | Fish. It appears direnv will too (which I rely on).
       | 
       | The one thing I can't work out is how to change the cursor to a
       | block, it's a line. No vi-mode or anything, just a nice
       | rectangle. I tried `set fish_cursor_default block` to no avail.
        
         | petepete wrote:
         | So after logging out and back in it started working. Switched
         | over my config and I'll give it a go full time.
        
       ___________________________________________________________________
       (page generated 2022-03-19 23:01 UTC)