delta
Posted on:
delta is a tool that enhances the display of diffs and can be used as a pager for git diff
. However, delta
itself is not a pager; it calls a pager internally. By default, delta
uses less
, but you can use ov
as the pager.
Therefore, delta settings are often specified by writing them in gitconfig. This is an example of gitconfig settings.
[core]
# delta will used as the default pager for git
# and ov as the default pager for delta
# the pager will be overloaded via the [pager] section for a few commands
pager = delta --pager='ov -F'
[pager]
# overload delta pager for some commands
show = delta --pager='ov -F --header 3'
# We are now overloading some commands via "delta features"
# This allows us to use different pager per git command
# It allows to maintain a simpler config file and avoid escaping quotes
diff = delta --features ov-diff
log = delta --features ov-log
[delta]
navigate = true
side-by-side = true
file-style = yellow
# we define the delta feature "ov-diff" we are using for git diff
[delta "ov-diff"]
# the idea is to overload the pager used by delta when using git diff
# we are using the same pattern used by delta when the default pager (less) is used
# using ov section feature brings a better experience
pager=ov -F --section-delimiter '^(commit|added:|removed:|renamed:|Δ)' --section-header --pattern '•'
# we define the delta feature "ov-log" we are using for git log
[delta "ov-log"]
# the idea is to overload the pager used by delta when using git log
# using ov section feature brings a better experience
pager=ov -F --section-delimiter '^commit' --section-header-num 3
This setting allows you to mark the necessary locations as section for ov
when using delta
.
By combining these settings, you can move files by file (space
key of ^
key) and diff by n/N
key.
Furthermore, even if you move a line, the difference file name can be displayed.