我写了一个脚本来显示git diff
。它会
stdout
显示输出是否适合终端屏幕的差异,或者- 否则在寻呼机中显示差异。
我的脚本:
#!/bin/sh
if ! git diff "$@" > /dev/null; then
# not in a Git repository
exit 1
fi
if [ `git diff "$@" | wc --lines` -gt `tput lines` ]; then
git diff "$@" --color=always | less
else
git diff "$@" --color=always | cat
fi
该脚本当前的限制:
- 如果我需要对
git show
or执行相同的操作git log
,我需要编写另外两个类似的脚本(不是 DRY)。 - 自动完成不起作用。我需要自己写一个(花费太多时间)。
现在我希望编写一个具有相同功能但用作分页器的脚本,以便我可以将 Git 配置设置core.pager
为脚本并解决提到的问题。
注意:我使用的是 Zsh。
更新
我尝试了less --no-init --quit-if-one-screen
(less -FX
),它几乎满足了我的需要,只是在超过一页的情况下它不会清除屏幕。所以实际上我需要--no-init
有条件的选项:禁用初始化并在适合一个屏幕时退出;没有其他特别行动。或许less --no-init-if-one-screen --quit-if-one-screen
?