为什么Windows cmd.exe的宽度限制为80个字符?


104

我喜欢在UNIX上扩展我的终端。Windows lame命令行背后的历史或原因是什么?


2
这是一个选择,就像其他很多东西一样。如果您使用固定大小,则设计“您的屏幕”会更容易,因为您确切知道限制。缺点很明显,因为无论选择什么尺寸,对于某人或某物总是错误的。过去,当前的Windows CMD屏幕实际上是唯一的屏幕。可用的分辨率很少,因此高分辨率的分辨率很小。
tvCa

Answers:


147

不是。您可以右键单击标题栏,选择属性,然后在“布局”选项卡中更改屏幕缓冲区大小(行宽和回滚)和窗口大小(视口大小)。如果从快捷方式启动cmd,则可以保存这些设置以供将来的会话使用。


2
不要忘记字体/颜色。当我打开命令提示符时,没有比回到某些复古绿色屏幕更好的了。8 ^ D
Dillie-O

13
您的意思是,“除了将字体更改为consolas外,别无其他” hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy,

5
我总是跳进去,将宽度设置为180,将回滚设置为9999。这并不是您经常需要的,但是我从未遭受过任何伤害(即使在128mb的机器时代,也有一次您需要它,你真的会很高兴你事先设置的宽度是个人喜好,我不喜欢从我的编译器看到的换行,除了在极端条件下,但别人永远不要喜欢滚动。
比尔ķ

4
增加屏幕缓冲区的高度被低估了。为了完全读取程序在屏幕上的输出,经常需要这种滚动(除非您使用MORE)。
编码风格

22
好吧,是的...但是没有。您无法通过拖动窗口边缘来随意调整窗口大小,在这里我们是2012年,它仍然没有改变。
亚历克斯·B

108

如果您害怕老鼠,也可以在cmd窗口中输入以下内容:

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.

11
这对于处理应用程序上对“ cmd / c ...”的系统调用非常有用,该应用程序检查窗口的大小以格式化其输出。只是在通话之前扔了一个“ 200,50 &&模式”,生活就很好了
Thomas

您至少会在Win7上丢失垂直滚动条
golimar

44

不限

  1. 运行cmd.exe
  2. 单击屏幕左上角的图标。
  3. 选择属性
  4. 选择布局选项卡。
  5. 将缓冲区和窗口的宽度设置为任何您喜欢的。
  6. 点击确定
  7. 选择保存属性以备将来使用...
  8. 单击确定。

您可能要签出Console。它是一个开源应用程序,可让您在选项卡式环境中运行多个Shell。您还可以设置外壳的Alpha透明度。


17

RE:因为MS重视很多方面的“向后兼容性”,在这种情况下,我怀疑这是一个错误的看法,即如果人们没有标准的80宽窗口,它将以某种方式使人们感到不安。

但是,向后兼容性非常糟糕。我不认为微软会非常彻底地实施它,而且我确实相信微软是确保新版本在旧版本上不起作用的先驱。在COMMAND.COM下,很多功能无法正常运行,这大大破坏了它的实用性,更不用说您必须输入DOSONLY才能使某些程序正常运行,此外Microsoft一直在删除有用的命令。老实说,我无法想象微软会高度重视“向后兼容性”。

此外,我认为行长为80列标准的真正原因是因为大多数命令行程序等都是在假设用户限制了80列提示的情况下运行的,这意味着增加宽度会导致格式化错误或更坏的情况可能会完全破坏程序。

正如jmucchiello所提到的,如果您愿意,MODE可以很好地调整窗口大小。

配置系统设备。

串行端口:MODE COMm [:] [BAUD = b] [PARITY = p] [DATA = d] [STOP = s]
                                [to = on | off] [xon = on | off] [odsr = on | off]
                                [octs = on | off] [dtr = on | off | hs]
                                [rts = on | off | hs | tg] [idsr = on | off]

设备状态:MODE [设备] [/ STATUS]

重定向打印:MODE LPTn [:] = COMm [:]

选择代码页:MODE CON [:] CP SELECT = yyy

代码页状态:MODE CON [:] CP [/ STATUS]

显示模式:MODE CON [:] [COLS = c] [LINES = n]

打字速度:MODE CON [:] [RATE = r DELAY = d]

但是,如果在CONFIG.NT上启用了DOSONLY,则当您打开COMMAND.COM时,它将从cmd.exe继承适当的DOS样式的行分辨率,但是您不能从COMMAND.COM内部调用MODE。如果要在COMMAND.COM中调整大小,则必须使用16位汇编指令,如下所示:

80x50线分辨率(无帧缓冲区,无SVGA,几乎普遍支持。)

调试
A100
MOV AX,1112
INT 10
INT 20

G
问

132x60线分辨率(无帧缓冲区,需要SVGA。不适用于ATI gfx卡,通常适用于nVidia gfx卡,afaict始终适用于Intel集成gfx卡。)

调试
A100
MOV AX,4F02
MOV BX,010C
INT 10
INT 20

G 问

如果您在COMMAND.COM上输入此名称,它将为您提供指定的分辨率。(警告:如果您的显示器过时而不能支持该模式,则可能会破坏它。旁注:如果您可以运行Windows,则您的显示器应该可以使用。免责声明:强调您的位置,并已收到警告。 ,因此,如果您的显示器炸了,这不是我的问题。文件并执行,则DEBUG)退出。

或者,您可以使用FreeDOS的MODE.COM,它将在COMMAND.COM设置为DOSONLY的情况下正常运行。您可以从官方网站(freedos.org)的磁盘映像中提取它,也可以在以下位置获取它http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/

Eric Auer 2003-2005的新FreeDOS MODE。许可:GPL。(2005年5月12日版本)
模式[设备] [/ STA [TUS]](显示一个或所有设备的状态)
模式LPTn [:] cols [,[lines] [,retry]](cols或cpi,6/8 lpi,重试p或n)
模式LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...](重试:p无限/ n无)
模式LPTn [:] = [COMn [:] | NUL](将打印机数据重定向到串行端口或NUL)
模式COMn [:]波特率,奇偶校验,数据,停止,重试(允许为空值)
模式COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  波特率可以缩写为唯一前缀,奇偶校验可以为o / e / n / s / m,
  后2个平均空格/标记,数据可以是5..8,停止是1..2。重试被忽略!
  计划:重试b / e / r->繁忙/错误/如果繁忙则准备就绪,部件号无限/不重试。
模式CON [:] [CP | CODEPAGE] [/ STA [TUS]](必须加载FreeDOS DISPLAY)
模式CON [:] [CP | CODEPAGE] REF [RESH](需要显示)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] =数字(需要显示)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] =((codepage)文件名)(需要显示)
  使用PREP =((,cp2,cp3,,cp5)...)在其他缓冲区中准备代码页。
模式[40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [,行](行可以是25、28、43或50)
  如果只想更改字体,请使用8、14或16作为“行”值。
模式[CO40 | CO80 | ...],[R | L] [,T](向左/向右移动CGA,T为交互模式)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] =值
  值可以是:+或-用于锁,或用于switchar的字符。
MODE CON [:] [COLS = ...] [LINES = ...](可能的值取决于您的硬件)
MODE CON [:] [RATE = ...] [DELAY = ...](默认速率20,默认延迟1)
  速率可以是1..32表示2..30字符/秒,延迟可以是1..4表示1 / 4..4 / 4秒。

出于与我提供的ASM代码相同的原因,除非您在COMMAND.COM中将DOSONLY添加到CONFIG.NT文件中执行它,否则一旦MODE.COM退出,该窗口将立即反弹到其先前的大小。

最后,正如其他人所述,也可以通过右键单击命令提示符的标题栏,然后修改“属性”->“布局”来修改这些设置。同样,您可以为CMD.EXE和批处理文件的任何快捷方式设置分辨率(右键单击快捷方式->属性->布局)。这仅适用于CMD.EXE,但是不适用于COMMAND.COM。


14

一个简单的命令来修复我一直使用的窗口大小:

wmic

它将打开Windows Management Instrumentation命令行并删除大小限制。然后只需用Ctrl+将其关闭C


6

我不知道其背后的历史,但是PuTTy作者的这个愿望清单项目是一个有趣的帖子,解释了任何不la脚的cmd.exe替换所涉及的技术障碍:

http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/win-command-prompt.html

您没有提到要寻找替代产品,但是如果这样,您可能还会检查一些cmd.exe替代产品,例如Console 2或JP Software的Take Command等。我在PuTTy-方面也有一些不错的经验-可以让您将PuTTy用作cygwin外壳的Cyg。


6

尽管宽度不受其他答案的限制,但我总是感到奇怪的是,可以用鼠标拖动并调整高度,但不能限制宽度

我认为默认的80个字符的宽度与假定终端的宽度不超过80个字符的旧程序的兼容性有关。不过,我认为这不是十年左右的现实原因。


9
宽度和高度都可以调整大小,恰好默认窗口宽度等于缓冲区宽度。您不能使窗口大于缓冲区,因此唯一的选择(使用默认的80列设置)是减小宽度。
efotinis,

4

正如其他人指出的那样,它不限于80个字符宽,但是我猜测为什么它默认为80个字符是因为它是在CRT显示为80个字符宽的DOS时代遗留下来的。

也可以看看


在文本模式下,现代显示器可以超过80个字符吗?
macropas

您可能必须在帧缓冲模式下运行才能完成此工作(但我可能错了,已经有一段时间了。)
andersop 2009年

有些SVGA模式的宽度为132个字符,而没有使用帧缓冲模式,但是很随意地支持它们。我的答案中列出了其中一种模式。
编码样式

3
它的意义远不止于此:IBM之所以将其CRT显示器宽80列,是因为其打孔卡宽80列。
dan04'4

2

您还可以使用其他终端应用程序,例如Console2,该应用程序允许您调整窗口大小(除其他外,例如透明性以及使用所需字体的能力)。这是一个很棒的应用程序,我已经切换到它了,现在我只cmd.exe在绝对需要时才使用。


1

由于它将在左右上下滚动,因此我在系统上所做的第一件事就是将宽度定义为180并保存。这通常就足够了,因此堆栈跟踪不必在大多数情况下自动换行,但也不必花太多钱就可以腾出很多空间。

在使用它时,将垂直大小(回滚缓冲区)设置为全9。你会很高兴你有一天。


1

由于MS在许多方面都重视“向后兼容性”,因此在这种情况下,我怀疑这是一个错误的看法,即如果人们没有标准的80宽窗口,它将以某种方式使人们感到不安。

当然,这可能是通用的,并且它被编程为固定的80个字符的宽度,并且其他属性设置有点麻烦。


1

它是有限的。看看这个。(我的意思是窗口大小不是缓冲区)

您会发现可以设置的最大宽度是有限的,但是会根据屏幕分辨率而有所不同。如果将分辨率设置为1024 x 768,您将发现只能在命令提示符宽度上达到128。128/1024 = .125

您会发现该比例在所有方面都保持一致。我有一个运行在2000x768的RDP会话(在三个监视器中的两个监视器上),最大宽度为250。

现在,实际结果比您实际使用的显示器要大一些,但我有三台显示器,它们都在单独的台式机上运行。(因此,本质上是3 1024x768分辨率),并且如果我想做一些简单的事情,例如将命令提示符扩展到2个或更多显示器上,则无法。(我想在处理路径很长的情况下(diruse.exe / etc)...

-C


2
如果您减小字体大小,则可以(相对)增大窗口大小。我刚刚在1600x1200的屏幕上获得了300宽。
迈克尔·迈尔斯

您仍然可以增大线宽并滚动窗口。自VGA以来,我的宽度已达到160或180。
比尔K

0

-1

因为改进类似Unix / GNU的开发所需的任何内容的可用性和功能性,将破坏Windows作为Microsoft合作伙伴的商业平台。防止这种情况意味着其他大型公司为开发人员提供的产品(例如改进的终端)和其他通用第三方产品(例如文字处理器,视频播放器等)不会与现有的Unix / GNU软件竞争。没有这个,Windows将不会是一个有利可图的平台,而微软将失去其桌面垄断地位。

这就是为什么终端很烂,没有POSIX API,MSVC中没有C99支持并且清单还在继续的原因。需要说明的是,有意不支持常见的Unix / GNU技术和开发,因此大型商业软件公司不必与之竞争。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.