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 log2つの異なる類似スクリプト(DRYではない)を作成する必要があります。
  2. オートコンプリートは機能しません。自分で書く必要があります(時間がかかりすぎます)。

これで同じことを行いますが、ページネーターとして機能するスクリプトを作成して、Git設定をcore.pagerスクリプトに設定し、上記の問題を解決できることを願っています。

注:私はZshを使用しています。

修正する

less --no-init --quit-if-one-screen()を試しましたが、less -FXページが複数ある場合は画面が消去されないことを除いて、必要な作業はほとんど行われました。したがって、実際には--no-init条件付きオプションが必要です。初期化を無効にして1画面に収まると終了します。他に特別な作業はありません。おそらくless --no-init-if-one-screen --quit-if-one-screen

関連情報