[英]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.