Fish Completion
It’s refreshing to use completion system in fish. Instead of gazillion scattered
completion functions (like in Bash or ZSH), obscure manuals and unsearchable
documents that only lead you to reverse engineering some online examples, fish
has one command: complete. Just call it repeatedly for all possible
arguments and you’re done. complete -h gives all the necessary details and online
tutorial has many useful examples on top of it.