-
Notifications
You must be signed in to change notification settings - Fork 105
Prior Art
If fzf.fish is a useful plugin, it is by standing on the shoulder of giants. This Wiki page explains how fzf.fish compares to and improves on two antecedent fzf integrations for Fish.
jethrokuan/fzf is another fzf plugin that provides similar features and is prevalent in the fish community (600+ stargazers and 30 contributors, including me). In fact, I referenced it frequently while developing this pluginβthank you Jethro!
So why another fzf plugin? While contributing to jethrokuan/fzf, I was discouraged by the complexity and inefficiency of the code that resulted from feature cruft (e.g. it's feature set is redundant, providing overlapping ways to action on files: find, cd, and open) and poor design decisions (e.g. Tmux support was implemented using a variable command). Moreover, the plugin hadn't received a major update in over a year (Jethro later confirmed to me that he stopped using fish). Wanting a sharper, actively improving tool and to give back to the community, I decided to write my own plugin.
After much work, fzf.fish now implements most of the same features but is faster, easier to maintain, and more Unix-y. I also added new features: using fzf to search git status, git log, and shell variables. However, I chose not to implement Tmux support directly, because users can easily add support externally themselves (see Cookbook); and tab completion, because even jethrokuan/fzf's implementation of it is buggy as evidenced by the many issues reported about it. Additionally, I invested generously into documentation and even set up continuous integration, making fzf.fish much easier to contribute to
TLDR: choose fzf.fish over jethrokuan/fzf if you want
- faster, more efficient, code
- code that is easier to debug if you encounter issues
- a tool built on Unix philosophy
- a plugin that is more likely to attract contributors because it is more maintainable and has CI
- a plugin that will be more frequently updated by its author (Jethro no longer uses fish)
- features for searching git status, git log, and shell variables
and you don't mind
- having to integrate fzf with Tmux yourself, which is easy to do
- not having buggy fzf tab completion
Fzf optionally comes with its own Fish extension. It is substantial but fzf.fish has these advantages over it:
- features for searching git status, git log, and shell variables
- timestamps when searching command history
- colorized results when searching for files
- previews when searching for files
- configurable key bindings
- autoloaded functions for faster shell startup
- easier to read, maintain, and contribute to
- better maintained