如何让 `less -FX' 在 2 行 shell 提示符下运行良好

如何让 `less -FX' 在 2 行 shell 提示符下运行良好

我的 shell 提示符有两行长( 的更高级版本[%n@%m %~]'$'\n''%#。我将 $LESS 设置为-FX。当我退出 less 时,它会在屏幕末尾留下一行,并且由于我的提示符有两行,因此less 输出滚动到终端窗口之外。

我宁愿丢失输出的最后一行,然后丢失第一行。

这个问题有什么解决办法吗?

答案1

less 输出的顶行在顶部滚动,因为您在底部打印一行,导致滚动一行。这就是\n您的提示中的内容。

如何避免这种情况,并且仍然有两条线?

您可以写出部分提示多于普通命令行,而不是使用两行提示符。从某种意义上说,这将是一个正常的行,并且在正常提示区域之外打印在上面(它需要终端转义序列来进行光标控制)。

正如您所建议的,这将less通过覆盖最后一个输出行来覆盖这种情况。
但它也会覆盖其他命令的输出 - 其中许多命令没有比这一行更多的输出。

因此需要对这两种情况进行一些显式处理,例如在非情况下打印额外的换行符less

这当然是可能的,但需要大量的手动调整才能在日常使用中足够流畅......

还有其他可能的方法,例如将终端滚动区域更改得更少,但这会变得更加混乱。

答案2

我知道现在已经晚了三年,但我的谷歌搜索把我带到了这里,所以我想我会分享。

对文件进行分页:

(printf '\n'; cat file.txt) | less -FX

要对另一个命令的输出进行分页(例如 git log):

git log | (printf '\n'; cat) | less -FX

输出以空行开始。然后,当您退出 less 时,该空白行将丢失,保留文件的第一行。

我用它作为 git log 别名。

相关内容