explaingit

jorgebucaran/fisher

9,224ShellAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

Fisher is a fast, zero-dependency plugin manager for the Fish shell that installs, updates, and removes plugins from GitHub or local folders with a single command and tracks your setup in a file you can share.

Mindmap

mindmap
  root((repo))
    What it does
      Install plugins
      Update plugins
      Remove plugins
    Plugin sources
      GitHub repos
      GitLab repos
      Local folders
    Key features
      Concurrent downloads
      Reproducible setup
      No dependencies
    How it works
      fish_plugins file
      Version control ready
      Install and uninstall hooks
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add Fish shell plugins like syntax highlighting or git helpers with one command, then reproduce the same setup on another machine using a single file.

USE CASE 2

Create your own Fish shell plugin with custom functions and completions that Fisher can install and uninstall cleanly.

USE CASE 3

Version-control your entire Fish shell configuration so a fresh machine can be set up identically by running one command.

Tech stack

Fish Shell

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

Fisher is a plugin manager for Fish, a command-line shell for Linux and macOS. Fish has a friendly interface with features like tab completion and syntax highlighting, and Fisher lets you add third-party plugins to it from the command line. You can install, update, and remove plugins with short commands, and Fisher records what you have installed so you can reproduce the same setup on another machine. Plugins are installed from GitHub by default: you give Fisher the username and repository name, and it downloads and sets up the plugin automatically. You can also install from GitLab, from a specific version tag or branch, or from a local folder on your computer. Downloads happen concurrently, so installing multiple plugins at once is fast. Fisher itself is written entirely in Fish, so it has no external dependencies. When you install or remove a plugin, Fisher updates a file called fish_plugins in your Fish configuration folder. That file lists everything installed, one entry per line. If you add that file to a version control system or share it between computers, running a single command brings your Fish setup back to the same state. You can also edit the file manually and run an update command to apply the changes. Creating your own plugin is straightforward: you put Fish script files in standard subdirectories for functions, configuration snippets, and completions. Themes follow the same pattern with an added themes folder. Plugins can respond to install, update, and uninstall events so they can set up or clean up their own resources. Fisher has no required configuration and no impact on how fast your shell starts. The project began in 2016 and is licensed under MIT.

Copy-paste prompts

Prompt 1
Using Fisher, help me set up a Fish shell environment with plugins for git branch display, syntax highlighting, and fuzzy file search. Show the fish_plugins file and installation commands.
Prompt 2
I want to create a Fisher plugin that adds custom Fish shell functions for my development workflow. Walk me through the required directory structure and files.
Prompt 3
Show me how to use Fisher's fish_plugins file to sync my shell plugin setup between my work laptop and home machine using Git.
Open on GitHub → Explain another repo

← jorgebucaran on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.