Git에 맞게 맞춤화된 페이지네이터

Git에 맞게 맞춤화된 페이지네이터

나는 그것을 표시하기 위해 스크립트를 작성했습니다 git diff. 그럴 것이다

  1. stdout출력이 터미널 화면에 맞는지 여부의 차이를 보여줍니다.
  2. 그렇지 않으면 차이가 호출기에 표시됩니다.

내 스크립트:

#!/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

이 스크립트의 현재 제한 사항:

  1. git show또는 로 동일한 작업을 수행 해야 하는 경우 git log두 개의 다른 유사한 스크립트(DRY 아님)를 작성해야 합니다.
  2. 자동 완성이 작동하지 않습니다. 직접 작성해야 합니다(시간이 너무 오래 걸립니다).

이제 동일한 작업을 수행하지만 페이지네이터 역할을 하는 스크립트를 작성하여 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?

관련 정보