当文件比屏幕短时,如何防止 less --quit-if-one-screen --no-init +G 用空行填充屏幕?

当文件比屏幕短时,如何防止 less --quit-if-one-screen --no-init +G 用空行填充屏幕?

我用

less -XFR +G

分页git log, 和的一些变体所有四个选项都很重要

我不喜欢的是,~当日志/文件比屏幕短时,它会用空行​​(用 标记)填充屏幕。

我能找到的较短的重现步骤如下:

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
}

相关内容