我希望能够向后滚动终端中每个会话的所有输出。
例如,当在大文件上使用时cat
,可能有数百行甚至数千行(我在很多文件中写了很多东西)。
有没有办法在不使用setterm --resize
、more
、 或 的less
情况下根据“需要”自动或手动增加缓冲区大小?
答案1
答案取决于您使用的终端模拟器。
在 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`