The project so-fancy/diff-so-fancy is very interesting, however I find it difficult to a) install it, b) hook it up to git.
For the a), I just like to install things as user, in home directory, not system-wide via
package manager. So even if the package exists (like it is in e.g. Homebrew for OS X, it
has diff-so-fancy
), I try to not use it. Think about remote shell accounts, is it good
to ask every system administrator to install your favorite packages?
With this Zsh plugin, you simply add two lines to .zshrc
:
zplugin ice as"program" pick"bin/git-dsf"
zplugin light zdharma/zsh-diff-so-fancy
This will install diff-so-fancy
on every account where you use Zshell, and automatically
equip git
with subcommand dsf
. No need to use system package manager and to configure
git
. Of course, if you have the following standard line in your .gitconfig
, it will
still work normally:
[core]
pager = diff-so-fancy | less -FXRi
(because this plugin adds diff-so-fancy
to $PATH
).
Think about Puppet or Chef, i.e. about declarative approach to system configuration.
In this case .zshrc
is like a declarative setup guarding you will have diff-so-fancy
on your accounts.
so-fancy/diff-so-fancy is cloned from
Github as submodule. The plugin has bin/git-dsf
script which adds subcommand dsf
to git. That's basically everything needed: convenient way of installing (single Zsh
plugin manager invocation), updating (Zsh plugin managers can easily update) and
integrating with git
.
# Zplug
zplug "zdharma/zsh-diff-so-fancy", as:command, use:"bin/"
# Zgen
zgen load zdharma/zsh-diff-so-fancy
Without as"program"
-like functionality the .plugin.zsh
file picks up setup
and simulates adding a command to system, so Zgen
and other can work.