Fisherman is a fish-shell plugin manager.
curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
Install a plugin.
Install several plugins concurrently.
fisher fzf edc/bass omf/thefuck omf/theme-bobthefish
Install a specific branch.
Install a specific tag.
Install a gist.
Install a local plugin.
Edit your fishfile to add or remove plugins. When you're done, run
fisher to commit your changes. The following example is for illustrative purposes only. Replace $EDITOR with the name of your preferred editor.
$EDITOR ~/.config/fish/fishfile fisher
Show everything you've installed.
fisher ls @ my_plugin # a local plugin * bobthefish # current theme bass fzf thefuck z
Show everything available to install.
Show additional information about plugins:
fisher ls-remote --format="%name(%stars): %info [%url]\n"
Update specific plugins.
fisher up bass z fzf
fisher rm thefuck
Remove all the plugins.
fisher ls | fisher rm
fisher help z
If you want to automate installing fisherman in a new system when it isn't already installed, add the following at the top of your ~/.config/fish/config.fish.
This will install fisherman and download all the plugins listed in your fishfile.
if not test -f ~/.config/fish/functions/fisher.fish curl -sLo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher fisher end
Is fisherman compatible with oh-my-fish themes and plugins?
How can I contribute to fisherman?
You are welcome to join the organization. Just ask and someone will send you an invite.
Where does fisherman put stuff?
The configuration and cache are saved to ~/.config/fisherman and ~/.cache/fisherman respectively.
The fishfile and plugins are saved to ~/.config/fish by default.
To customize this location, add the following to your ~/.config/fish/config.fish file:
set -U fish_path ~/my/path set fish_function_path $fish_path/functions $fish_function_path set fish_complete_path $fish_path/completions $fish_complete_path for file in $fish_path/conf.d/*.fish builtin source $file 2> /dev/null end
How do I have fisherman copy plugin files instead of linking?
By default, fisherman will create symlinks to plugin files.
To have fisherman copy files:
set -U fisher_copy true
What is a fishfile and how do I use it?
The fishfile lists what you've installed, and it's automatically updated as you install / remove plugins.
You can edit this file and run
fisher to install missing plugins and dependencies.
What is a plugin?
A plugin is:
a directory with one or more .fish functions at the root level of the project or inside a functions/ directory
a theme or prompt: a fish_prompt.fish and/or fish_right_prompt.fish
a snippet: one or more .fish files inside a conf.d/ directory, run by fish at the start of the session
How do I create my own plugins?
You can use fishkit to help you scaffold out a new project from scratch.
How can I list plugins as dependencies to my plugin?
Create a new fishfile at the root level of your project and write the plugin URL like so github.com/owner/repo.
Why am I receiving errors when running
You can export the GITHUB_USER and GITHUB_TOKEN environment variables in your shell, to prevent GitHub's search API from rejecting anonymous requests:
set -x GITHUB_USER your_username set -x GITHUB_TOKEN your_github_api_token_for_fisherman
If you don't have a GitHub API token, you can generate one from account settings