设置cygwin终端窗口的大小

时间:2015-02-27 13:51:52

标签: perl terminal cygwin ansi-escape mintty

我有一个小的perl脚本,它在cygwin终端中执行并打印出格式化的表。 在默认窗口大小,如果文本太长,cygwin将插入一个换行符,从而破坏我的表的格式。 有没有办法从我的perl脚本中将cygwin窗口设置为更大的尺寸以避免出现这种问题?

3 个答案:

答案 0 :(得分:6)

如果您碰巧在可以向mintty命令添加标志的快捷方式中运行此操作,则可以设置大小。好处是它看起来更平滑而没有调整大小。

$ /cygdrive/c/tools/cygwin/bin/mintty.exe --help
Usage: mintty [OPTION]... [ PROGRAM [ARG]... | - ]

Start a new terminal session running the specified program or the user's shell.
If a dash is given instead of a program, invoke the shell as a login shell.

Options:
  -c, --config FILE     Load specified config file (cf. -C or -o ThemeFile)
  -e, --exec ...        Treat remaining arguments as the command to execute
  -h, --hold never|start|error|always  Keep window open after command finishes
  -p, --position X,Y    Open window at specified coordinates
  -p, --position center|left|right|top|bottom  Open window at special position
  -p, --position @N     Open window on monitor N
  -s, --size COLS,ROWS  Set screen size in characters (also COLSxROWS)
  -s, --size maxwidth|maxheight  Set max screen size in given dimension
  -t, --title TITLE     Set window title (default: the invoked command) (cf. -T)
  -w, --window normal|min|max|full|hide  Set initial window state
  -i, --icon FILE[,IX]  Load window icon from file, optionally with index
  -l, --log FILE|-      Log output to file or stdout
      --nobidi|--nortl  Disable bidi (right-to-left support)
  -o, --option OPT=VAL  Set/Override config file option with given value
  -B, --Border frame|void  Use thin/no window border
  -R, --Reportpos s|o   Report window position (short/long) after exit
      --nopin           Make this instance not pinnable to taskbar
  -D, --daemon          Start new instance with Windows shortcut key
  -H, --help            Display help and exit
  -V, --version         Print version information and exit
See manual page for further command line options and configuration.

答案 1 :(得分:4)

如果您使用mintty作为终端模拟器(它是默认设置) 过去几年中Cygwin的终端模拟器),您可以使用ANSI escape codes来操纵终端。

您可以通过运行以下Perl代码片段来更改终端仿真器窗口的大小来测试:

# If terminal supports ANSI escape sequences
$lines = 80;
$columns = 100;
print "\e[8;$lines;${columns}t";

注意:如果在screen窗口中运行,这不起作用,我不知道为什么。根据{{​​1}}手册页,应支持此转义序列。

说明

ANSI转义序列的语法不是最容易阅读的,但这里是 提供上述顺序基础的文档。

screen打印一个Escape字符,该字符开始ANSI转义序列。 这也称为控制序列导入器(CSI)

\e结尾的特定序列来自此List of xterm control sequences

t

答案 2 :(得分:3)

你甚至不需要Perl,你可以在Bash中做同样的事情:

echo -en "\e[8;35;100t";

为什么不是剧本:

#!/bin/bash
# minsize - A TTY re-size escape sequence for use with mintty Cygwin
# Usage: minsize <width> <height>
WIDTH=$1
HEIGHT=$2
echo -en "\e[8;${HEIGHT};${WIDTH}t";

请注意,在其他* nix上,ttysize可用。