繁体   English   中英

如何从git-diff传递选项到更少?

[英]How do I pass options to less from git-diff?

我在OSX机器上为git设置了一个相当默认的设置,但我想将-j.5添加到更少的内容,以便搜索匹配发生在屏幕中间。

我尝试执行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但是没有提及unix工具的“ pager”或“ less”的提及(与“ greater”相反)。

可以修改环境变量,也可以将参数传递给git diff 我知道当我在git diff本身中时,我只能输入-j.5

Git的设置有点特殊:

  • 默认的寻呼机less (尽管这是一个编译时选项)。
  • 您可以使用core.pager配置特定的寻呼机。 如果执行此操作,则可以在此处添加选项。
  • less命令本身首先读取环境变量LESS ,然后扫描选项。
  • 如果将环境变量LESS设置为(包括空字符串在内的任何内容),则Git不会设置它;否则,它不会设置。 但是否则,即使寻呼机不less ,Git也会将其设置为FRX

因此,如git config文档中所述

...如果core.pager选择地覆盖LESS Git默认设置,则可以将core.pager设置为less -S 这将由Git传递给Shell,它将最终命令转换为LESS=FRX less -S 环境未设置S选项,但命令行设置了该选项,从而减少了截断长行的指示。 同样,将core.pager设置为core.pager less -+F会从命令行禁用环境指定的F选项,从而禁用less的“如果一个屏幕退出”的行为。 可以专门为某些命令激活一些标志:例如,将pager.blame设置为less -S仅对git blame启用行截断。

因此,如果只希望对git diff设置,请将pager.diff设置为less -j.5 如果您希望所有Git命令都使用它,则可以core.pager设置为less -j.5 或者将环境变量LESS设置为FRXj.5 两者将具有相同的效果。

那些ESC[1m是终端的颜色代码。 对于less的解释,请添加选项-R 还建议使用选项-FSX

export LESS=FRSXj.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM