.\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . .TH "FISHER" "1" "March 2016" "" "fisherman" . .SH "NAME" \fBfisher\fR \- Fish plugin manager . .SH "SYNOPSIS" fisher \fIcommand\fR [\fIoptions\fR] [\-\-version] [\-\-help] . .br . .SH "DESCRIPTION" Fisherman is a plugin manager for fish\. . .P The CLI consists of the following commands: \fIinstall\fR, \fIupdate\fR, \fIuninstall\fR, \fIlist\fR, \fIsearch\fR and \fIhelp\fR\. . .SH "USAGE" Run a command\. . .IP "" 4 . .nf fisher [] . .fi . .IP "" 0 . .P Get help about a command\. . .IP "" 4 . .nf fisher help . .fi . .IP "" 0 . .P Fisherman knows the following aliases: \fIi\fR for install, \fIu\fR for update, \fIl\fR for list, \fIs\fR for search and \fIh\fR for help\. . .SH "OPTIONS" . .TP \-v, \-\-version Show version information\. Fisherman follows Semantic Versioning and uses Git annotated tags to track releases\. . .TP \-h, \-\-help Show usage help\. . .SH "EXAMPLES" Install plugins\. . .IP "" 4 . .nf fisher install fishtape shark get . .fi . .IP "" 0 . .P Install a plugin from a local directory\. . .IP "" 4 . .nf fisher install \./path/to/plugin . .fi . .IP "" 0 . .P Install a plugin from a URL\. . .IP "" 4 . .nf fisher install owner/repo . .fi . .IP "" 0 . .P Install a plugin from a Gist URL\. . .IP "" 4 . .nf fisher install gist\.github\.com/owner/1f40e1c6e0551b2666b2 . .fi . .IP "" 0 . .P Update Fisherman\. . .IP "" 4 . .nf fisher update . .fi . .IP "" 0 . .P Update plugins\. . .IP "" 4 . .nf fisher update shark get . .fi . .IP "" 0 . .P Uninstall plugins\. . .IP "" 4 . .nf fisher uninstall fishtape debug . .fi . .IP "" 0 . .P Uninstall plugins and remove them from the cache\. . .IP "" 4 . .nf fisher uninstall fishtape debug \-f . .fi . .IP "" 0 . .P Show all the documentation\. . .IP "" 4 . .nf fisher help \-\-all . .fi . .IP "" 0 . .SH "LIST AND SEARCH" The list command displays all the plugins you have installed\. The search command queries the index to show what\'s available to install\. . .P List installed plugins\. . .IP "" 4 . .nf fisher list debug * fishtape > shellder * spin @ wipe . .fi . .IP "" 0 . .P The legend consists of: . .P \fB*\fR The plugin is currently enabled . .br \fB>\fR The plugin is a prompt . .br \fB@\fR The plugin is a symbolic link . .br . .P Search the index\. . .IP "" 4 . .nf fisher search \.\.\. * debug Conditional debug logger errno POSIX error code/string translator * fishtape TAP producing test runner flash Flash\-inspired, thunder prompt fzf Efficient keybindings for fzf get Press any key to continue \.\.\. > shellder Powerline prompt optimized for speed \.\.\. . .fi . .IP "" 0 . .P Get detailed information about a plugin\. . .IP "" 4 . .nf fisher search shellder > shellder by simnalamburt Powerline prompt optimized for speed github\.com/simnalamburt/shellder . .fi . .IP "" 0 . .P Search plugins using tags\. . .IP "" 4 . .nf fisher search \-\-tag={git,test} \.\.\. * fishtape TAP producing test runner git\-branch\-name Get the name of the current Git branch git\-is\-repo Test if the current directory is a Git repo git\-is\-dirty Test if there are changes not staged for commit git\-is\-stashed Test if there are changes in the stash \.\.\. . .fi . .IP "" 0 . .SH "PLUMBING" Fisherman commands are pipe aware\. Plumb one with another to create complex functionality\. . .P Update all the plugins in the cache\. . .IP "" 4 . .nf fisher list | fisher update \- . .fi . .IP "" 0 . .P Enable all the plugins that are currently disabled\. . .IP "" 4 . .nf fisher list \-\-disabled | fisher install . .fi . .IP "" 0 . .P Uninstall all the plugins and remove them from the cache\. . .IP "" 4 . .nf fisher list | fisher uninstall \-\-force . .fi . .IP "" 0 . .SH "DOTFILES" When you install a plugin, Fisherman updates a file known as \fIfishfile\fR to track what plugins are currently enabled\. . .P To customize its location: . .IP "" 4 . .nf set \-g fisher_file ~/\.dotfiles/fishfile . .fi . .IP "" 0 . .SH "FLAT TREE" Fisherman merges the directory trees of all the plugins it installs into a single flat tree\. Since the flat tree is loaded only once at the start of the shell, Fisherman performs equally well, regardless of the number of plugins installed\. . .P The following illustrates an example Fisherman configuration path with a single plugin and prompt\. . .IP "" 4 . .nf $fisher_config |\-\- cache/ |\-\- conf\.d/ | `\-\- my_plugin\.config\.fish |\-\- fishfile |\-\- functions/ | |\-\- my_plugin\.fish | |\-\- fish_prompt\.fish | `\-\- fish_right_prompt\.fish |\-\- completions/ | `\-\- my_plugin\.fish `\-\- man/ `\-\- man1/ `\-\- my_plugin\.1 . .fi . .IP "" 0 . .SH "INDEX" The index is a plain text database that lists Fisherman official plugins\. . .P The index is a list of records, each consisting of the following fields: \fIname\fR, \fIurl\fR, \fIinfo\fR, one or more \fItags\fR and \fIauthor\fR\. . .P Fields are separated by a new line \fB\en\fR\. Tags are separated by one \fIspace\fR\. . .IP "" 4 . .nf z https://github\.com/fishery/fish\-z Pure\-fish z directory jumping z search cd jump jethrokuan . .fi . .IP "" 0 . .P If you have a plugin to submit to the index, use the \fIsubmit\fR plugin\. . .IP "" 4 . .nf fisher install submit fisher submit my_plugin . .fi . .IP "" 0 . .P Otherwise, submit the plugin manually by creating a pull request in the index repository \fIhttps://github\.com/fisherman/fisher\-index\fR\. . .IP "" 4 . .nf git clone https://github\.com/fisherman/fisher\-index cd index echo "$name\en$url\en$info\en$tags\en$author\en\en" >> index git push origin master . .fi . .IP "" 0 . .SH "FISHFILE" Fisherman keeps track of a special file known as \fIfishfile\fR to know what plugins are currently enabled\. . .IP "" 4 . .nf # My Fishfile gitio fishtape shark get shellder . .fi . .IP "" 0 . .P This file is automatically updated as you install and uninstall plugins\. . .SH "VARIABLES" . .TP $fisher_home The home directory\. If you installed Fisherman using the recommended method \fBcurl \-sL install\.fisherman\.sh | fish\fR, the location ought to be \fIXDG_DATA_HOME/fisherman\fR\. If you clone Fisherman and run make yourself, the current working directory is used by default\. . .TP $fisher_config The configuration directory\. This is default location of the \fIfishfile\fR, \fIkey_bindings\.fish\fR, \fIcache\fR, \fIfunctions\fR, \fIcompletions\fR and \fIconf\.d\fR directories\. The default location is \fIXDG_CONFIG_HOME/fisherman\fR\. . .TP $fisher_file See FISHFILE above\. . .TP $fisher_cache The cache directory\. Plugins are downloaded to this location\. . .TP $fisher_alias \fIcommand\fR=\fIalias\fR \.\.\. Use this variable to create aliases of Fisherman commands\. . .SH "PLUGINS" Plugins can be utilities, prompts, commands or snippets\. . .SS "UTILITIES" Utilities are plugins that define one or more functions which are mean to be used in the CLI directly by the user\. . .P This example walks you through creating \fIwtc\fR, a plugin based in \fIgithub/ngerakines/commitment\fR random commit message generator\. . .P Create a directory and initialize a Git repository\. . .IP "" 4 . .nf mkdir wtc cd wtc git init git remote add origin https://github\.com//wtc . .fi . .IP "" 0 . .P Add the wtc function\. . .IP "" 4 . .nf function wtc \-d "Generate a random commit message" switch "$argv" case \-h \-\-help printf "Usage: wtc [\-\-help]\en\en" printf " \-h \-\-help Show usage help\en" return end curl \-s whatthecommit\.com/index\.txt end . .fi . .IP "" 0 . .P Install the plugin\. . .IP "" 4 . .nf fisher install \. wtc (\e /) (O\.o) (> <) Bunny approves these changes\. . .fi . .IP "" 0 . .P Commit changes and push to your remote origin when you are done\. . .IP "" 4 . .nf git add \-\-all git commit \-m "What the commit?" git push origin master . .fi . .IP "" 0 . .P To submit wtc to the official index\. . .IP "" 4 . .nf fisher install submit fisher submit . .fi . .IP "" 0 . .P This will create a PR in the Fisherman index repository\. Once the PR is approved, Fisherman users will be able to install wtc if they have the latest index\. . .IP "" 4 . .nf fisher install wtc . .fi . .IP "" 0 . .P See \fBfisher help submit\fR for more submit options\. . .P Create a completions directory and add a completions file\. . .IP "" 4 . .nf mkdir completions cat > completions/wtc\.fish complete \-\-command wtc \-\-short h \-\-long help \-\-description "Show usage help" ^ . .fi . .IP "" 0 . .P Alternatively, use \fB__fisher_complete\fR to create completions from wtc usage output\. . .IP "" 4 . .nf wtc \-\-help | __fisher_complete wtc . .fi . .IP "" 0 . .P Create a man/man1 directory and add a man(1) page for wtc\. . .P There are utilities that can help you generate man pages from various text formats\. For example, pandoc(1) and ronn(1)\. . .P To create a man page manually\. . .IP "" 4 . .nf mkdir \-p man/man1 cat > man/man1/wtc\.1 \.TH man 1 "Today" "1\.0" "wtc man page" \.SH NAME wtc \e\- Generate a random commit message \.SH SYNOPSIS wtc [\-\-help] \.SH OPTIONS \-h, \-\-help: Display help information\. \.SH SEE ALSO https://github\.com/ngerakines/commitment ^C . .fi . .IP "" 0 . .P A plugin can list dependencies to other plugins using a \fIfishfile\fR\. . .P Create a new file in the root of your project and add the name or URL of your desired dependencies\. . .IP "" 4 . .nf cat > fishfile my_plugin https://github\.com/owner/another_plugin ^D . .fi . .IP "" 0 . .SS "PROMPTS" Prompts, also known as themes, are plugins that modify the appearance of the shell prompt and modify fish syntax colors\. . .P Create a \fBfish_prompt\fR function\. . .IP "" 4 . .nf function fish_prompt printf "%s (%s) >> " (prompt_pwd) Fisherman end ~ (Fisherman) >> type here . .fi . .IP "" 0 . .P To add a right prompt, create a \fBfish_right_prompt\fR function\. . .IP "" 4 . .nf function fish_right_prompt printf "%s" (date +%H:%M:%S) end . .fi . .IP "" 0 . .P Save the functions to a directory and install the prompt as a plugin\. . .IP "" 4 . .nf mkdir my_prompt cd my_prompt functions fish_prompt > fish_prompt\.fish functions fish_right_prompt > fish_right_prompt\.fish fisher install \. . .fi . .IP "" 0 . .P Customize the colors fish uses for syntax highlighting\. . .IP "" 4 . .nf function set_color_custom set \-U fish_color_normal #\.\.\. set \-U fish_color_command #\.\.\. set \-U fish_color_param #\.\.\. set \-U fish_color_redirection #\.\.\. set \-U fish_color_comment #\.\.\. set \-U fish_color_error #\.\.\. set \-U fish_color_escape #\.\.\. set \-U fish_color_operator #\.\.\. set \-U fish_color_end #\.\.\. set \-U fish_color_quote #\.\.\. set \-U fish_color_autosuggestion #\.\.\. set \-U fish_color_valid_path #\.\.\. set \-U fish_color_cwd #\.\.\. set \-U fish_color_cwd_root #\.\.\. set \-U fish_color_match #\.\.\. set \-U fish_color_search_match #\.\.\. set \-U fish_color_selection #\.\.\. set \-U fish_pager_color_prefix #\.\.\. set \-U fish_pager_color_completion #\.\.\. set \-U fish_pager_color_description #\.\.\. set \-U fish_pager_color_progress #\.\.\. set \-U fish_color_history_current #\.\.\. end functions set_color_custom > set_color_custom\.fish fisher update \. . .fi . .IP "" 0 . .SS "COMMANDS" Commands are plugins that extend the Fisherman CLI adding new \fBfisher \fR\. . .P Create a function \fBfisher_\fR . .IP "" 4 . .nf function fisher_time \-d "Say hello" printf "It\'s %s\en" (date +%H:%M) end . .fi . .IP "" 0 . .P Test it works . .IP "" 4 . .nf fisher time It\'s 6:30 . .fi . .IP "" 0 . .P Make it a plugin . .IP "" 4 . .nf fisher install fisher_time . .fi . .IP "" 0 . .P This creates a new directory fisher_time in the current working directory and installs the plugin\. . .P The following example implements a command to format plugin information into columns\. . .IP "" 4 . .nf function fisher_info \-d "Display information about plugins" switch "$argv" case \-h \-\-help printf "Usage: fisher info [\.\.\.]\en\en" printf " \-h \-\-help Show usage help\en" return end for item in $argv fisher search $item \-\-name \-\-info end | sed \-E \'s/;/: /\' | column end fisher install fisher_info . .fi . .IP "" 0 . .SS "SNIPPETS" Snippets are plugins that run code at the start of the shell\. Snippets must be placed inside a sub directory named conf\.d\. . .P The following example implements the fish_postexec hook to display the runtime of the last command in milliseconds\. . .IP "" 4 . .nf mkdir \-p runtime/conf\.d cd runtime cat > conf\.d/fish_postexec\.fish function fish_postexec \-\-on\-event fish_postexec printf "%sms\en" $CMD_DURATION > /dev/stderr end ^D fisher install \./postexec . .fi . .IP "" 0 . .SH "AUTHORS" Fisherman was created by Jorge Bucaran :: @bucaran :: \fIj@bucaran\.me\fR\. . .P See THANKS\.md file for a complete list of contributors\. . .SH "SEE ALSO" fisher help tutorial . .br