zsh-diff-so-fancy
zsh-diff-so-fancy copied to clipboard
⚙️ The diff-so-fancy for Zsh
❮ Zi ❯ Plugin - zsh-diff-so-fancy
The diff-so-fancy
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.
Manual configuration
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"
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 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
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
Other plugin managers
Zplug
zplug "z-shell/zsh-diff-so-fancy", as:command, use:"bin/"
Zgen
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.