是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:

git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫

但我更喜欢命令行开关。


当前回答

如果您在~/.oh-my-zsh/lib/misc.zsh文件中使用oh my zsh,请注释这一行:

env_default 'LESS' '-R'

其他回答

正如前面提到的答案,如果内容少于一个屏幕,则将-F选项传递给less会导致它退出。然而,在这样做之后,屏幕被重置,你最终看不到内容。

-X选项消除了这种行为。因此,我使用以下方法根据内容量启用条件分页:

git config --global --replace-all core.pager "less -F -X"

与此相关,如果设置了默认的寻呼机,并且希望创建使用不同寻呼机的别名,则可以使用-c选项将配置参数仅传递给一个命令。

例如,我将delta配置为我的默认git寻呼机,但我可以像这样创建一个lessdiff git别名,以便在需要使用less的情况下使用。

[alias]
    lessdiff = -c core.pager=less diff

文档中最近的更改提到了一种不同的方式来删除less的默认选项(“默认选项”是FRSX)。

对于这个问题,应该是(git 1.8+)

git config --global --replace-all core.pager 'less -+F -+X'

例如,Dirk Bester在评论中建议:

export LESS="$LESS -FRXK" 

这样我就可以用Ctrl-C从更少开始得到彩色diff。

Wilson F在评论和问题中提到:

less支持水平滚动,因此当行被截断时,less禁用“如果有一个屏幕就退出”,这样用户仍然可以向左滚动文本以查看被截断的内容。


这些修改在git 1.8.x中已经可见,如“始终为git diff使用寻呼机”(参见注释)所示。但文档刚刚被改写(2013年第4季度,第1.8.5或1.9位)。

Git命令使用的文本查看器(例如“less”)。该值将由shell解释。优先顺序为:$GIT_PAGER环境变量,那么core.pager配置,然后$PAGER,然后在编译时选择默认值(通常为“less”)。当LESS环境变量未设置时,Git将其设置为FRSX(如果设置了LESS环境变量,Git根本不会更改它)。如果您想选择性地覆盖Git的LESS默认设置,可以将core.pager设置为例如LESS-+s。这将由Git传递给shell,它将最终命令转换为LESS=FRSX LESS-+S。环境告诉命令设置S选项以剪切长线,但命令行将其重置为默认值以折叠长线。


关于新文件措辞背后的原因,请参见承诺97d01f2a:

config:重写core.pager文档

文本中提到了core.pager和GIT_pager,但没有给出优先顺序。从gitvar(1)文档中借用更好的描述。使用该机制允许系统范围、全局和每个存储库的配置文件不限于此特定变量。删除它以澄清段落。重写部分,说明如何将环境变量LESS设置为Git的默认值,以及如何选择性地自定义它。


注意:提交b327583(Matthieu Moy Moy,2014年4月,对于git 2.0.x/2.1,2014年第3季度)将默认删除S:

寻呼机:默认情况下从$LESS中删除“S”

默认情况下,如果用户未设置$LESS,Git会将$LESS设置为-FRSX。FRX标志实际上对Git来说是有意义的(F和X是因为有时Git管道的输出是短的,R是因为Git管道为输出着色)。另一方面,S标志(斩长线)与Git无关,而是用户偏好的问题。Git不应决定用户更改LESS的默认值。更具体地说,S标志会伤害在寻呼机中查看不可信代码的用户,因为补丁看起来像:-旧代码;+新的良好规范;[…很多标签…]恶意代码;将看起来与:-旧代码;+新的良好规范;喜欢旧行为的用户仍然可以将$LESS环境变量显式设置为-FRSX,或将core.pager设置为“LESS-S”。

文件内容如下:

环境不会设置S选项,但命令行会设置,指示less截断长行。类似地,将core.pager设置为less-+F将从命令行停用环境指定的F选项,停用less的“如果一个屏幕退出”行为。可以专门为特定命令激活一些标志:例如,将pager.fault设置为less-S仅对git责备启用行截断。

我的.gitconfig中有这个hunk,它似乎工作正常(diff和show都禁用):

[pager]
    diff = false
    show = false

关于管道时禁用的颜色:

使用--color可避免禁用着色。

git diff—颜色|更少-R

或者强制配置(例如.gitconfig):

[color]
        ui = on

git diff |小于-R

对于非彩色工具,请使用:

gitdiff--无颜色|一些基本工具

导出环境变量LESS=-R(在例如.bashrc中)默认情况下在“LESS”中启用颜色支持:

git diff|更少