All my Fish functions
I think I’ve wrapped up my conversion to Fish for the time being. I can honestly say that now that I’m past the tinkering phase, I’m more productive in Fish than I was in Bash. Which is no small claim, I was pretty good at Bash.
In the process of the transition I created quite a collection of functions and completion scripts, so I figured I’d make them available on the off chance that someone else is taking the same journey and/or is curious.
The full collection is up on GitHub, with descriptions of all the folders and every function. I diligently added a --description
to every function in the source, then wrote a script to list them all with their descriptions. That script is in the repo, too.
Most of these came from my Bash setup, some even saw some improvements over their predecessors. You’ll even recognize some of them from my Shell Tricks posts. There are a few highlights:
- All of the files in
functions
go in the auto-load folder, so none of them actually have to sit in memory while you’re using the shell. Lots of functions, little consequence. - All of the app shortcuts (Acorn, TaskPaper, Tower, etc.) have completion commands that work very nicely. These are located in the
completions
directory, which is also auto-loaded. - The
mkdir
command handles deep creation of intermediate directories (-p
) and asks if you want tocd
into the final target after it’s run. The prompt takes a single key (y/n) and can be dismissed with return. While there are some downsides, I generally like Fish’sread
command. - There’s a bash folder with some of my more involved bash scripts that I’ve been successfully running from Fish without issue.
editscript
,reiki
,na
, etc. - A smart
cat
shadow function that usesbat
except when it’s a Markdown file, in which case it uses mdless. - The
cdd
command is pretty sweet for jumping deep into a directory tree with fuzzy matching (andfzf
selection when there are multiple matches) fix
takes search and replace arguments to fix up the last command you ran.cl
re-runs the last command and copies the output to the clipboard- I ported
imdown
,imgsize
, my horizontal rule functions, aspell tools, and more. Plus a slew of little math utilities likecalc
,sum
, andpercentoff
.
If you’re just starting to play around with Fish, this should be a great way to see what’s possible and get started with porting your own setup. If you’re a long-time Fish user, you’ll probably be able to tell me where all I went wrong (which I’m totally open to), but maybe you’ll find some inspiration, too?
Check out the full collection at github.com/ttscoff/fish_files.