如何创建扩展缓冲区?

如何创建扩展缓冲区?

我希望能够向后滚动终端中每个会话的所有输出。

例如,当在大文件上使用时cat,可能有数百行甚至数千行(我在很多文件中写了很多东西)。

有没有办法在不使用setterm --resizemore、 或 的less情况下根据“需要”自动或手动增加缓冲区大小?

答案1

答案取决于您使用的终端模拟器。

在 GNOME 终端中,是的,这是可能的:在您的配置文件首选项中,确保未选中“滚动”部分中的“限制回滚至:”:

GNOME 终端首选项屏幕显示滚动部分,其中突出显示了“限制回滚至”条目

另一方面,Kitty 不允许设置无限的回滚缓冲区大小,并且有一个巨大的回滚缓冲区不推荐;但您可以保留一个单独的分页回滚缓冲区(可以在分页器中使用 访问CtrlShiftH)。

答案2

IMO,你正在解决错误的问题。更准确地说,cat即使对于大文件,当使用 更有意义时也使用less,您正在为自己制造一个不需要的问题。

只要养成使用的习惯就可以了less。使用-F( --quit-if-one-screen) 选项,如果整个文件可以在终端中显示而无需滚动,则自动退出。因此,它cat对于短文件来说就像一个寻呼机(具有向前和向后移动,以及内置搜索等)对于长文件。额外的好处是,通过习惯性地使用 less 而不是 cat,您可以避免因意外 cat-ing 二进制文件而弄乱终端的风险。

这可以通过设置别名alias less='less -F'或设置 LESS 环境变量(例如export LESS=-F)来设置为默认值。

当然,这可以与其他较少的选项结合使用,例如我的~/.bashrc

export LESS=-MFRqx4ij3

顺便说一句,我将终端应用程序设置为具有 10,000 行的回滚缓冲区。这几乎在所有时候都足够了,滚动缓冲区中最靠后的任何内容很少与我现在正在做的事情相关。

答案3

找到这个帖子:

https://stackoverflow.com/questions/5243445/bash-command-to-change-size-of-bash-window

“Pillpusher”的答案非常适合我所追求的。只需更改数字以满足我的需求即可:

resize 命令用于更改窗口的大小,但
如果您不告诉终端使用整个区域,您可能会遇到一些奇怪的事情。这就是我使用的,效果很好。

    `#!/bin/bash`
    `resize -s 33 100`
    `stty rows 33`
    `stty cols 100`

相关内容