我的 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 别名。