ファイルが画面より短いときにless --quit-if-one-screen --no-init +Gが画面に空白行を埋めるのを防ぐ方法は?

ファイルが画面より短いときにless --quit-if-one-screen --no-init +Gが画面に空白行を埋めるのを防ぐ方法は?

私は使う

less -XFR +G

ページ付けgit logのいくつかのバリエーションと4つのオプションはすべて重要です。

私が嫌いなのは、~ログ/ファイルが画面より短いときに画面が空白行(マーカーを含む)で埋められることです。

再現するために見つけることができるより短いステップは次のとおりです。

echo -e 'one\ntwo\nthree' | less -F +G

ファイルがページに収まったら、コマンドが存在しないかのように動作したいと思います。

ベストアンサー1

less自体はこれを行う方法がないようです。スクリプトを使用してcatとlessの間で決定できます(改善されたhttps://superuser.com/a/215307):

maybeless() {
  if [[ "$1" ]]; then
    f="$1"
  else
    f="$(mktemp)"
    cat > "$f"
  fi
  < <(wc -lc < "$f") read -r lines chars
  if (( "$lines" < ${LINES:-20} && "$chars" < ${COLUMNS:-80} * ${LINES:-20} )); then
    cat "$f"
  else
    less -XR +G "$f"
  fi
  if [[ -z "$1" ]]; then
    rm "$f"
  fi
}

おすすめ記事