我最近发现了 Ada 编程语言,但是 C 编程语言也存在这个问题。表单提要未按预期工作。
阿达示例:
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
begin
New_Page;
end Main;
在 C 中相同:
#include <stdio.h>
int main (void) {
printf ("\f");
return 0;
}
两者都只会在 XTerm 和 Linux 控制台(均使用 zsh)上产生一个新行。他们应该像 Ctrl-L 那样清除屏幕。
调用时
# ./main | cat -A
我得到一个
^L
但是如果我输入一个
# cat -A
然后输入一个
Ctrl-L
我得到一个
^L
也是。
有谁知道如何使表单提要像 Ctrl-L 一样工作?
感谢您的帮助!
最佳答案
根据 this article清除屏幕的正确方法是 printf("\033[2J");
(前提是您的终端支持 ANSI 转义序列并且与 VT100 兼容)。我可以确认这适用于使用 GNOME 终端的 Linux Mint,以及使用 xterm 和 PuTTY 的 Windows。
^L
清除屏幕看起来不像是可移植的约定。例如,在带有 POSIX shell 的 HP-UX 上,将 ^L
传递给 shell 不会执行任何操作。这看起来更像是 bash
事件。
打印 \f
将清除某些终端的屏幕,但不会清除其他终端。例如,从 Windows 登录到 Red Hat 主机,我可以在 PuTTY 中使用 printf("\f");
清除屏幕,但在 xterm 中不能(在后一种情况下我得到一个空行)。
关于c - 换页不清除屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847252/