나는 그것을 표시하기 위해 스크립트를 작성했습니다 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
또는 로 동일한 작업을 수행 해야 하는 경우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
?