1

我在 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 工具的“更少”(与“更大”相反的意思)。

修改环境变量或将参数传递给git diff是可以接受的。我知道-j.5当我在 git diff 中时我可以输入。

4

2 回答 2

6

Git 的设置有点奇怪:

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

因此,如文档中所述git config

...如果您想选择性地覆盖 Git 的默认设置LESS,您可以设置core.pager为例如less -S. 这将由 Git 传递给 shell,它将最终命令转换为LESS=FRX less -S. 环境不设置S选项,但命令行设置,指示 less 截断长行。同样,设置core.pagerless -+FF从命令行停用环境指定的选项,停用less. 可以专门为特定命令激活一些标志:例如,设置 pager.blameless -S仅对git blame.

因此,如果你只想要这个git diff,设置pager.diffless -j.5。如果您希望所有 Git 命令都使用它,您可以环境变量设置core.pagerless -j.5 LESS设置为FRXj.5; 两者都会产生相同的效果。

于 2018-01-30T00:17:42.930 回答
2

这些ESC[1m是终端的颜色代码。为了less解释它们添加选项-R-FSX还建议使用以下选项:

export LESS=FRSXj.5
于 2018-01-30T00:14:53.443 回答