当我在终端上调整大小时,它会全屏显示。 我猜,有些东西可以找出终端的屏幕尺寸。我怎么能在VT100中做到这一点?
当我列出文件夹时,它显示蓝色文件夹。 (或者说不同的颜色)但是,如果将输出保存到文本文件(ls> out.txt),则不会看到任何ANSI代码而是纯文本。但是,如果您尝试(vi> out.txt),您将看到ANSI代码。怎么知道的?
谢谢
答案 0 :(得分:7)
自动调整到屏幕大小调整的程序(例如vi
)响应SIGWINCH
信号,并使用系统调用获取系统有关屏幕大小的信息。例如,参见 Get width/height of a terminal window in c++? 。顺便说一句,虽然广泛实施,但似乎没有在POSIX signal.h
中记录。
如果不考虑SIGWINCH
,程序可以询问终端有关其屏幕大小的信息。 resize
程序通过将终端控制序列发送到
ls
和vi
(和其他程序)关于ANSI控制序列的行为将嵌入其输出中取决于程序的设计。他们可能使用isatty
函数检测其输出重定向到文件,并根据输出是终端还是文件来执行不同的操作。