Need help with fisher?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jorgebucaran
4.7K Stars 222 Forks MIT License 817 Commits 5 Opened issues

Description

A plugin manager for Fish.

Services available

!
?

Need anything else?

Contributors list

Fisher

A plugin manager for Fish—the friendly interactive shell.

Manage functions, completions, bindings, and snippets from the command line. Extend your shell capabilities, change the look of your prompt and create repeatable configurations across different systems effortlessly.

  • Zero configuration out of the box. Need to tweak a thing? You can do that too.
  • 100% pure-Fish—easy to contribute to or modify.
  • Blazing fast concurrent plugin downloads.
  • Oh My Fish! plugin support.

Looking for plugins? Browse git.io/awsm.fish or search on GitHub.

Installation

curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher

👋 Upgrading from Fisher 3.x or 2.x?

Quickstart

You can install, update, and remove plugins interactively with Fisher, taking advantage of Fish tab completion and rich syntax highlighting.

Installing plugins

Install plugins using the

install
command followed by the path to the repository on GitHub.
fisher install ilancosman/tide

To get a specific version of a plugin add an

@
symbol after the plugin name followed by a tag, branch, or commit.
fisher install jorgebucaran/[email protected]

You can install plugins from a local directory too.

fisher install ~/path/to/plugin

Fisher expands plugins into your Fish configuration directory by default, overwriting existing files. If you wish to change this behavior, set

$fisher_path
to your preferred location and put it in your function path (#640).

Listing plugins

List all the plugins that are currently installed using the

list
command.
$ fisher list
jorgebucaran/fisher
ilancosman/tide
jorgebucaran/[email protected]
/home/jb/path/to/plugin

The

list
command also accepts a regular expression to filter the output.
$ fisher list \^/
/home/jb/path/to/plugin

Updating plugins

The

update
command updates one or more plugins to their latest version.
fisher update jorgebucaran/fisher

Use just

fisher update
to update everything.

Removing plugins

Remove installed plugins using the

remove
command.
fisher remove jorgebucaran/[email protected]

You may want to remove everything, including Fisher.

fisher list | fisher remove

Using your
fish_plugins
file

Whenever you install or remove a plugin from the command line, Fisher will write down all the installed plugins plugins to

$__fish_config_dir/fish_plugins
. Adding this file to your dotfiles or version control is the easiest way to share your configuration across different systems.

You can also edit this file and run

fisher update
to commit changes. Here's an example:
nano $__fish_config_dir/fish_plugins
jorgebucaran/fisher
ilancosman/tide
jorgebucaran/[email protected]
+ PatrickF1/fzf.fish
- /home/jb/path/to/plugin
fisher update

That will install PatrickF1/fzf.fish, remove /home/jb/path/to/plugin, and update everything else.

Creating a plugin

A plugin can be any number of files in a

functions
,
conf.d
, and
completions
directory. Most plugins consist of a single function, or configuration snippet. This is what a typical plugin looks like.
ponyo
├── completions
│   └── ponyo.fish
├── conf.d
│   └── ponyo.fish
└── functions
    └── ponyo.fish

Non

.fish
files as well as directories inside those locations will be copied to
$fisher_path
under
functions
,
conf.d
, or
completions
respectively.

Event system

Plugins are notified as they are being installed, updated, or removed via Fish events.

--on-event
functions must already be loaded when their event is emitted. Thus, you should put your event handlers in the
conf.d
directory.
# Defined in ponyo/conf.d/ponyo.fish

function _ponyo_install --on-event ponyo_install # Set universal variables, create bindings, and other initialization logic. end

function _ponyo_update --on-event ponyo_update # Migrate resources, print warnings, and other update logic. end

function _ponyo_uninstall --on-event ponyo_uninstall # Erase "private" functions, variables, bindings, and other uninstall logic. end

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.