⚙️ 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 dsfto see the diff output.fancy-diff <file1> <file2>to pipe thediffoutput.diff-so-fancy -hto 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