私はそれを表示するためのスクリプトを書いた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
2つの異なる類似スクリプト(DRYではない)を作成する必要があります。- オートコンプリートは機能しません。自分で書く必要があります(時間がかかりすぎます)。
これで同じことを行いますが、ページネーターとして機能するスクリプトを作成して、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
?