mirror of
https://github.com/jorgebucaran/fisher
synced 2024-11-09 07:10:27 +00:00
2574ce64d9
A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
260 lines
5.5 KiB
Markdown
260 lines
5.5 KiB
Markdown
[slack-link]: https://fisherman-wharf.herokuapp.com/
|
|
[slack-badge]: https://img.shields.io/badge/slack-join%20the%20chat-00B9FF.svg?style=flat-square
|
|
[travis-link]: https://travis-ci.org/fisherman/fisherman
|
|
[travis-badge]: https://img.shields.io/travis/fisherman/fisherman.svg?style=flat-square
|
|
|
|
[![Build Status][travis-badge]][travis-link]
|
|
[![Slack][slack-badge]][slack-link]
|
|
|
|
# [fisherman] - fish shell plugin manager
|
|
|
|
fisherman is a zero-configuration, concurrent plugin manager for the [fish shell].
|
|
|
|
Read this document in another language: [Español], [日本語], [简体中文].
|
|
|
|
## Why?
|
|
|
|
* Simple
|
|
|
|
* No configuration
|
|
|
|
* No external dependencies
|
|
|
|
* No impact on shell startup time
|
|
|
|
* Use it interactively or _a la_ vundle
|
|
|
|
* Only the essentials, install, update, remove, list and help
|
|
|
|
## Install
|
|
|
|
Copy `fisher.fish` into your `~/.config/fish/functions` directory and that's it.
|
|
|
|
```sh
|
|
curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
|
|
```
|
|
|
|
## Usage
|
|
|
|
Install a plugin.
|
|
|
|
```
|
|
fisher simple
|
|
```
|
|
|
|
Install from multiple sources.
|
|
|
|
```
|
|
fisher z fzf omf/{grc,thefuck}
|
|
```
|
|
|
|
Install from a URL.
|
|
|
|
```
|
|
fisher https://github.com/edc/bass
|
|
```
|
|
|
|
Install from a gist.
|
|
|
|
```
|
|
fisher https://gist.github.com/username/1f40e1c6e0551b2666b2
|
|
```
|
|
|
|
Install from a local directory.
|
|
|
|
```sh
|
|
fisher ~/my_aliases
|
|
```
|
|
|
|
Use it a la vundle. Edit your fishfile and run `fisher` to satisfy changes.
|
|
|
|
> [What is a fishfile and how do I use it?](#9-what-is-a-fishfile-and-how-do-i-use-it)
|
|
|
|
```sh
|
|
$EDITOR fishfile # add plugins
|
|
fisher
|
|
```
|
|
|
|
See what's installed.
|
|
|
|
```
|
|
fisher ls
|
|
@ my_aliases # this plugin is a local directory
|
|
* simple # this plugin is the current prompt
|
|
bass
|
|
fzf
|
|
grc
|
|
thefuck
|
|
z
|
|
```
|
|
|
|
Update everything.
|
|
|
|
```
|
|
fisher up
|
|
```
|
|
|
|
Update some plugins.
|
|
|
|
```
|
|
fisher up bass z fzf thefuck
|
|
```
|
|
|
|
Remove plugins.
|
|
|
|
```
|
|
fisher rm simple
|
|
```
|
|
|
|
Remove all the plugins.
|
|
|
|
```
|
|
fisher ls | fisher rm
|
|
```
|
|
|
|
Get help.
|
|
|
|
```
|
|
fisher help z
|
|
```
|
|
|
|
## FAQ
|
|
|
|
### 1. What fish version is required?
|
|
|
|
fisherman was built for the latest fish, but at least 2.2.0 is required. If you can't upgrade your build, append the following code to your `~/.config/fish/config.fish` for [snippet](#12-what-is-a-plugin) support.
|
|
|
|
```fish
|
|
for file in ~/.config/fish/conf.d/*.fish
|
|
source $file
|
|
end
|
|
```
|
|
|
|
### 2. How do I install fish on OS X?
|
|
|
|
With Homebrew.
|
|
|
|
```
|
|
brew install fish
|
|
```
|
|
|
|
### 3. How do I install the latest fish on some Linux?
|
|
|
|
With git, from the source.
|
|
|
|
```sh
|
|
sudo apt-get -y install git gettext automake autoconf \
|
|
ncurses-dev build-essential libncurses5-dev
|
|
|
|
git clone -q --depth 1 https://github.com/fish-shell/fish-shell
|
|
cd fish-shell
|
|
autoreconf && ./configure
|
|
make && sudo make install
|
|
```
|
|
|
|
### 4. How do I use fish as my default shell?
|
|
|
|
Add fish to the list of login shells in `/etc/shells` and make it your default shell.
|
|
|
|
```sh
|
|
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
|
|
chsh -s /usr/local/bin/fish
|
|
```
|
|
|
|
### 5. How do I uninstall fisherman?
|
|
|
|
Run
|
|
|
|
```fish
|
|
fisher self-uninstall
|
|
```
|
|
|
|
### 6. Is fisherman compatible with oh my fish themes and plugins?
|
|
|
|
Yes.
|
|
|
|
### 7. Why fisherman? Why not ____?
|
|
|
|
fisherman has / is:
|
|
|
|
* small and fits in one file
|
|
|
|
* zero impact on shell startup time
|
|
|
|
* fast and easy to install, update and uninstall
|
|
|
|
* no need to edit your fish configuration
|
|
|
|
* correct usage of the XDG base directory spec
|
|
|
|
### 8. Where does fisherman put stuff?
|
|
|
|
fisherman goes in `~/.config/fish/functions/fisher.fish`.
|
|
|
|
The cache and plugin configuration is created in `~/.cache/fisherman` and `~/.config/fisherman` respectively.
|
|
|
|
The fishfile is saved to `~/.config/fish/fishfile`.
|
|
|
|
### 9. What is a fishfile and how do I use it?
|
|
|
|
The fishfile `~/.config/fish/fishfile` lists all the installed plugins.
|
|
|
|
You can let fisherman take care of this file for you automatically, or write in the plugins you want and run `fisher` to satisfy the changes.
|
|
|
|
```
|
|
fisherman/simple
|
|
fisherman/z
|
|
omf/thefuck
|
|
omf/grc
|
|
```
|
|
|
|
This mechanism only installs plugins and missing dependencies. To remove a plugin, use `fisher rm` instead.
|
|
|
|
### 10. Where can I find a list of fish plugins?
|
|
|
|
Browse the [organization] or use the [online] search to discover content.
|
|
|
|
### 11. How do I upgrade from ____?
|
|
|
|
fisherman does not interfere with any known frameworks. If you want to uninstall oh my fish, refer to their documentation.
|
|
|
|
### 12. What is a plugin?
|
|
|
|
A plugin is:
|
|
|
|
1. a directory or git repo with a function `.fish` file either at the root level of the project or inside a `functions` directory
|
|
|
|
2. a theme or prompt, i.e, a `fish_prompt.fish`, `fish_right_prompt.fish` or both files
|
|
|
|
3. a snippet, i.e, one or more `.fish` files inside a directory named `conf.d` that are evaluated by fish at the start of the shell
|
|
|
|
### 13. How can I list plugins as dependencies to my plugin?
|
|
|
|
Create a new `fishfile` file at the root level of your project and write in the plugin dependencies.
|
|
|
|
```fish
|
|
owner/repo
|
|
https://github.com/dude/sweet
|
|
https://gist.github.com/bucaran/c256586044fea832e62f02bc6f6daf32
|
|
```
|
|
|
|
### 14. What about fundle?
|
|
|
|
fundle inspired me to use a bundle file, but it still has limited capabilities and requires you to modify your fish configuration.
|
|
|
|
### 15. I have a question or request not addressed here. Where should I put it?
|
|
|
|
Create a new ticket on the issue tracker:
|
|
|
|
* https://github.com/fisherman/fisherman/issues
|
|
|
|
|
|
[fish shell]: https://github.com/fish-shell/fish-shell
|
|
[fisherman]: https://github.com/fisherman.sh
|
|
[organization]: https://github.com/fisherman
|
|
[online]: http://fisherman.sh/#search
|
|
|
|
[Español]: docs/es-ES
|
|
[简体中文]: docs/zh-CN
|
|
[日本語]: docs/jp-JA
|