2014-01-15 253 views
0

当我在Linux操作系统Term::Size::Anychars)和Term::ReadKeyGetTerminalSize)上调用此脚本时,总是返回相同数量的列。在MSWin32操作系统上的条款:: ReadKey :: GetTermialSize操作系统

当我在Windows机器上调用脚本时,只要用鼠标将鼠标调整为较小的大小,返回的列数就会不同。 chars返回新的宽度,而GetTerminalSize返回初始终端宽度。

GetTerminalSize得到新的调整后的终端宽度有一个窍门吗?

use strict; 
use warnings; 
use 5.10.0; 

use Term::Size::Any qw(chars); 
use Term::ReadKey qw(GetTerminalSize); 


say((chars(\*STDOUT))[0]); 
say((GetTerminalSize(\*STDOUT))[0]); 
+0

你调整大小和得到一个滚动条,或通过属性实际改变窗口的大小,它们是不一样的“东西” – nrathaus

+0

我如何调整终端的大小:我将鼠标移动到控制台的右下角,然后按下鼠标左键然后我将鼠标移到左边 - 同时按住鼠标左键。 –

回答

1

您目前所做的并不是所谓的“调整大小”,终端屏幕大小仍然相同,您只是减少终端可见大小。

改变窗口终端“大小”,单击左上角,转到属性更改“屏幕缓冲区大小”,此刻的你只是改变了“窗口大小”

+0

我只对可见部分感兴趣(不滚动)。 'Term :: Size :: Any'在写一些可移植的东西时可以满足我的需求。但有时我必须加载'Term :: ReadKey',然后我可以使用'GetTerminalSize'。 –