
Shell Game: Trying out Fish

Largely prompted1 by Brett Terpstra's post on trying fish, I decided to give this whimsical shell another try.
I've been messing with shell configurations for a long while now. It looks like I switched to zsh in 2013 in Polka2.
I think that it's been a couple of versions since I tried fish… I think that I was initially turned off by the fact that I couldn't figure out how to configure it, and it was just so… chatty. Having been used to the terseness of bash and zsh, the extra messaging and completions seemed juvenile. Here's another swing at it.
Good: Configuration
I've slimmed down my zsh config to be basically five things:
- Sensible config. The bare minimum to get path, history, etc.)
- Prompt. I want some information about where I am on the system, including VCS info.3
- asdf. I use asdf to install all my languages and packages.
- fasd. Jumping between folders and such. Not to be confused with asdf, I've become utterly reliant on fasd to move around quickly.
- FZF. Pretty similar to fasd, but I use it a good bit.
My fish install is… really short. I'm using fisher to install packages, and then using a fishfile to configure four out of the five.
danhper/fish-asdf
rafaelrinaldi/pure
fishgretel/fasd
That is really pretty much it. I kind of like that.
Weird: Colors
Fish has a distinction between colors and prompt theme that I still don't really understand.
I found in github's code search some poor soul on the same quest as I, who
hardcoded gruvbox's
colors
into fish fish_variables
file, which you can also configure via a GUI when
you run fish_config colors
. It's pretty close.
I suppose there's some way to just remove the colors and have them inherit from the terminal, although it is nice that you can use whatever color you want.
Weird (but good): Functions and Variables
I like what little I know about how fish loads functions when it needs them rather than on startup… my fish setup seems to be a lot faster than my zsh so far.
I do have problems with plugins putting user/computer specific information into
the fish_variables
file. I would prefer my config to be fairly transferrable
between computers. As it is, I've just uninstalled such plugins, including the
one for FZF. We'll see if I miss it.
Ironically, fish's ability to hotload from functions leads to weird behavior... I removed a plugin from one pane in tmux, then switching to another pane in tmux caused parts of the files to be rewritten and reloaded. Just something to keep in mind.
As I write, Brett has decided to stick with
it and so will
I. It anecdotally seems faster than my (admittedly naive) zsh setup, and it's
fun trying something new. I do trip up not getting access to FZF's history
search and bash/zsh's !$
syntax for accessing the last token... but maybe not
having those crutches will lead me down new paths.
Changelog
-
2022-06-08 11:31:29 -0500Rename articles
-
2020-06-18 14:26:02 -0500Move everything to CST
Don't know why I didn't do that before. It caused _no_ end of
problems. -
2019-11-14 19:21:38 -0600Remove Tag: programming
`code` is the same tag and has more coverage.
-
2019-11-12 08:58:25 -0600Change four -> five
I miscounted how many things I was doing in my zsh. * facepalm *
-
2019-11-11 20:12:10 -0600New post: Trying Fish