The so-fancy/diff-so-fancy as Github submodule.
The plugin has bin/git-dsf
script which adds subcommand dsf
to git
, and bin/fancy-diff
to pipe the diff
output to diff-so-fancy.
diff-so-fancy --colors # View the commands to set the recommended colors
diff-so-fancy --set-defaults # Configure git-diff to use diff-so-fancy and suggested colors
diff-so-fancy --patch # Use diff-so-fancy in patch mode (interoperable with `git add --patch`)
# Configure git to use d-s-f for *all* diff operations
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
# Configure git to use d-s-f for `git add --patch`
git config --global interactive.diffFilter "diff-so-fancy --patch"
Should the first block of an empty line be colored. (Default: true)
git config --bool --global diff-so-fancy.markEmptyLines false
Simplify git header chunks to a more human readable format. (Default: true)
git config --bool --global diff-so-fancy.changeHunkIndicators false
Should the pesky +
or -
at line-start be removed. (Default: true)
git config --bool --global diff-so-fancy.stripLeadingSymbols false
By default, the separator for the file header uses Unicode line-drawing characters. If this is causing output errors on your terminal, set this to false
to use ASCII characters instead. (Default: true)
git config --bool --global diff-so-fancy.useUnicodeRuler false
By default, the separator for the file header spans the full width of the terminal. Use this setting to set the width of the file header manually.
git config --global diff-so-fancy.rulerWidth 47 # git log's commit header width
Install with Zi
The project so-fancy/diff-so-fancy integration with Zi.
Simply add two lines to .zshrc
:
Using bin-gem-node annex (recommended):
zi ice as'null' sbin'bin/*'
zi light z-shell/zsh-diff-so-fancy
Default:
zi ice as'program' pick'bin/*'
zi light z-shell/zsh-diff-so-fancy
This will add diff-so-fancy
, fancy-diff
, git-dsf
to $PATH
and automatically equip git
with subcommand dsf
.
No need to use the system package manager or manually configure git
, however, if you have the following standard line in your .gitconfig
, it will still work as expected:
[core]
pager = diff-so-fancy | less --tabs=4 -RFX
[interactive]
diffFilter = diff-so-fancy --patch
zplug "z-shell/zsh-diff-so-fancy", as:command, use:"bin/"
zgen load z-shell/zsh-diff-so-fancy
Without as"program"
-like functionality the .plugin.zsh
file picks up setup
and simulates adding a command to the system, so Zgen
and others can work.