This is a fairly common question, and there isn't a One True Answer.
These are the most common techniques:
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
Due to the OSX limitations in ports below 1024, in order to use them without running as root the virtualbox headless you can do the following workaround, (remember the command ipfw is deprecated on El Capitan)
In the Vagrant file use ports over 1024, for instance change 80 and 443 to 8080 and 8043.
# Apache
config.vm.network "forwarded_port", guest: 80, host: 8080
Where do the files go?:
~/.config/fish/functions/fish_user_key_bindings.fish ~/.config/fish/functions/fzf-smart-completion-setup.fish
Source:
https://feltrac.co/environment/2020/01/18/build-your-own-shell-completion.html