如何增加SWI终端内存?

How to increase SWI terminal memory?

在 SWI Prolog 的默认控制台 window 应用程序中 - 例如由 swipl-win.exe 在 Windows -

上启动的应用程序

执行一个(或多个)向标准输出写入过多的查询后,无法读取 'oldest' 行。也就是说 - 一段时间后,向上滚动不会显示超过一个点的行。

有没有办法增加 SWI Prolog 终端 'memory' 中的行数?

这与 swi shell 本身没有太大关系。 swi shell 通常只会将字符写入标准输出通道。这取决于终端程序本身(这通常不是由 swi 本身实现的)。捕获该输出并对其进行处理,例如显示它。

例如标准 Ubuntu terminal has an option to allow "unlimited scrolling". There are similar options for other terminals like konsole. See for example here and here.

另一种方法是使用像 tee [wiki] 这样的程序,它将输出打印到终端,并将其存储在文件(或其他程序)中。

如果终端移动速度不是那么快,您可以在大多数终端中使用 Scroll Lock 来临时 "freeze" 滚动,从而让您有机会看到内容。但是,这 不会 暂停程序本身,如果您再次按 Scroll Lock,同时生成的输出已经从无法再检索滚动缓冲区。

IMO 的一个不错的选择是让 protocol 发挥作用。这样,您就有了一个镜像您的控制台的文件,用于输入和输出,并且您可以通过任何好的文本编辑器随意检查。