⚙️ Diff So Fancy
z-shell/zsh-diff-so-fancy
The wrapper around so-fancy/diff-so-fancy to use with Zsh helps to improve code quality and spot defects faster.
The plugin adds the subcommand dsf
to git
, and provides the command fancy-diff
to pipe the diff
output to diff-so-fancy:
git dsf
to see the diff output.fancy-diff <file1> <file2>
to pipe thediff
output.diff-so-fancy -h
to see the help.
Install Diff-So-Fancy
- Zi
- Zgen
- Oh-My-Zsh
Add the following to your .zshrc
file:
Using bin-gem-node annex (recommended):
zi ice as'null' sbin'bin/*'
zi light z-shell/zsh-diff-so-fancy
Standard installation:
zi ice as'program' pick'bin/*'
zi light z-shell/zsh-diff-so-fancy
This will add diff-so-fancy
, fancy-diff
, and git-dsf
to $PATH
and automatically equip git
with the subcommand dsf
.
Add the following to your .zshrc
file in the same place you're doing your other zgen load
calls.
zgen load z-shell/zsh-diff-so-fancy
Clone the Repository:
git clone https://github.com/z-shell/zsh-diff-so-fancy.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-diff-so-fancy
And add zsh-diff-so-fancy
to your plugin list:
plugins=(... zsh-diff-so-fancy)
Configuration
diff-so-fancy --colors
Configure git-diff to use diff-so-fancy and suggested colors:
diff-so-fancy --set-defaults
Use diff-so-fancy in patch mode (interoperable with git add --patch
):
diff-so-fancy --patch
Configure git
to use diff-so-fancy
for all diff operations:
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFXS"
Configure git to use diff-so-fancy
for git add --patch
:
git config --global interactive.diffFilter "diff-so-fancy --patch"
Options
markEmptyLines
Should the first block of an empty line be colored? (Default: true)
git config --bool --global diff-so-fancy.markEmptyLines false
changeHunkIndicators
Simplify git header chunks to a more human-readable format. (Default: true)
git config --bool --global diff-so-fancy.changeHunkIndicators false
stripLeadingSymbols
Should the pesky +
or -
at the line start be removed? (Default: true)
git config --bool --global diff-so-fancy.stripLeadingSymbols false
useUnicodeRuler
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
rulerWidth
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