如何将选项从 git-diff 传递给 less?
How do I pass options to less from git-diff?
我在 OSX 机器上为 git 设置了相当默认的设置,但我想将 -j.5 添加到 less,以便搜索匹配发生在屏幕中间。
我试过 export LESS=-j.5
,但这会导致出现 ESC[1mdiff --git a/app/images/bluecog-icon.png b/app/images/bluecog-icon.pngESC[m
之类的内容,即使事先 echo $LESS
给出了一个空结果。我查找了 git help diff
,但它没有提到 "pager",也没有提到提到 unix 工具的 "less"(而不是 "greater" 的反义词) ).
可以修改环境变量,也可以传递参数给git diff
。我知道当我在 git diff 本身时我可以输入 -j.5
。
那些ESC[1m
是终端的颜色代码。要 less
解释它们,请添加选项 -R
。还推荐选项 -FSX
:
export LESS=FRSXj.5
Git的设置有点奇怪:
- 默认分页器是
less
(尽管这是一个编译时选项)。
- 您可以使用
core.pager
配置特定的寻呼机。如果这样做,您可以在此处添加选项。
less
命令本身首先读取环境变量 LESS
,然后扫描选项。
- 如果设置了环境变量
LESS
(任何值,甚至包括空字符串),Git 不会设置它;但除此之外,Git 将其设置为 FRX
,即使寻呼机不是 less
.
因此,如 the git config
documentation 中所述:
... If you want to selectively override Git's default setting for LESS
,
you can set core.pager
to e.g. less -S
. This will be passed to the
shell by Git, which will translate the final command to LESS=FRX less -S
. The environment does not set the S
option but the command
line does, instructing less to truncate long lines. Similarly,
setting core.pager
to less -+F
will deactivate the F
option
specified by the environment from the command-line, deactivating
the "quit if one screen" behavior of less
. One can specifically
activate some flags for particular commands: for example, setting
pager.blame
to less -S
enables line truncation only for git blame
.
因此,如果您只想 git diff
使用此功能,请将 pager.diff
设置为 less -j.5
。如果你想要它用于所有 Git 命令,你可以 或者 设置 core.pager
到 less -j.5
或者 设置环境变量 LESS
到 FRXj.5
;两者的效果相同。
我在 OSX 机器上为 git 设置了相当默认的设置,但我想将 -j.5 添加到 less,以便搜索匹配发生在屏幕中间。
我试过 export LESS=-j.5
,但这会导致出现 ESC[1mdiff --git a/app/images/bluecog-icon.png b/app/images/bluecog-icon.pngESC[m
之类的内容,即使事先 echo $LESS
给出了一个空结果。我查找了 git help diff
,但它没有提到 "pager",也没有提到提到 unix 工具的 "less"(而不是 "greater" 的反义词) ).
可以修改环境变量,也可以传递参数给git diff
。我知道当我在 git diff 本身时我可以输入 -j.5
。
那些ESC[1m
是终端的颜色代码。要 less
解释它们,请添加选项 -R
。还推荐选项 -FSX
:
export LESS=FRSXj.5
Git的设置有点奇怪:
- 默认分页器是
less
(尽管这是一个编译时选项)。 - 您可以使用
core.pager
配置特定的寻呼机。如果这样做,您可以在此处添加选项。 less
命令本身首先读取环境变量LESS
,然后扫描选项。- 如果设置了环境变量
LESS
(任何值,甚至包括空字符串),Git 不会设置它;但除此之外,Git 将其设置为FRX
,即使寻呼机不是less
.
因此,如 the git config
documentation 中所述:
... If you want to selectively override Git's default setting for
LESS
, you can setcore.pager
to e.g.less -S
. This will be passed to the shell by Git, which will translate the final command toLESS=FRX less -S
. The environment does not set theS
option but the command line does, instructing less to truncate long lines. Similarly, settingcore.pager
toless -+F
will deactivate theF
option specified by the environment from the command-line, deactivating the "quit if one screen" behavior ofless
. One can specifically activate some flags for particular commands: for example, settingpager.blame
toless -S
enables line truncation only forgit blame
.
因此,如果您只想 git diff
使用此功能,请将 pager.diff
设置为 less -j.5
。如果你想要它用于所有 Git 命令,你可以 或者 设置 core.pager
到 less -j.5
或者 设置环境变量 LESS
到 FRXj.5
;两者的效果相同。