我喜欢在 unix 上扩展我的终端。windows lame命令行背后的历史或原因是什么?
14 回答
它不是。您可以右键单击标题栏,选择属性,然后在“布局”选项卡中更改屏幕缓冲区大小(线宽和回滚)和窗口大小(视口大小)。如果您从快捷方式启动 cmd,则可以保存这些设置以备将来使用。
如果你害怕鼠标,你也可以在 cmd 窗口中输入:
mode <cols>,<lines>
mode 80,25
mode 120,50
etc.
它不受限制。
- 运行 cmd.exe
- 单击屏幕左上角的图标。
- 选择属性
- 选择布局选项卡。
- 将缓冲区和窗口宽度设置为您喜欢的任何值。
- 点击确定
- 选择保存属性以供将来使用...
- 单击确定。
您可能想查看Console。它是一个开源应用程序,可让您在选项卡式环境中运行多个 shell。您还可以设置外壳的 alpha 透明度。
RE:因为 MS 在很多事情上都重视“向后兼容性”,在这种情况下,我怀疑这是一个错误的信念,即如果人们没有标准的 80 宽窗口,它会以某种方式不安。
不过,向后兼容性非常糟糕。我不认为微软对他们的实施非常彻底,我相信微软是确保新版本不能在旧版本上运行的海报男孩。在 COMMAND.COM 下很多东西都不能正常工作,这大大破坏了它所拥有的实用性,更不用说你必须输入 DOSONLY 才能使某些程序正常运行,而且微软一直在删除有用的命令。老实说,我无法想象微软非常重视“向后兼容性”。
此外,我认为行长以 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 智力 10 智力 20 G 问
132x60 线分辨率(无帧缓冲,需要 SVGA。不适用于 ATI gfx 卡,通常适用于 nVidia gfx 卡,afaict 始终适用于 Intel 集成 gfx 卡。)
调试 A100 MOV AX,4F02 MOV BX,010C 智力 10 智力 20G 问
如果您在 COMMAND.COM 上输入此内容,它将为您提供指定的分辨率。(警告:如果您的显示器足够古老,不支持该模式,您可能会毁掉它。旁注:如果您可以运行 Windows,您的显示器应该没问题。免责声明:强调应该,并且您已被警告,所以如果您的显示器出现故障,这不是我的问题。;-) 但是,如果您在未启用 DOSONLY 的情况下使用它,COMMAND.COM 将在应用程序后立即调整回原来的大小(在这种情况下,除非您将其写入文件并执行,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 模式。许可证:GPL。(2005 年 5 月 12 日版本) MODE [device] [/STA[TUS]](显示一个或所有设备的状态) MODE LPTn[:] cols[,[lines][,retry]] (cols or cpi, 6/8 lpi, retry p or n) MODE LPTn[:] [COLS=...] [LINES=...] [RETRY=...] (重试:p 无限/n 无) MODE LPTn[:]=[COMn[:]|NUL](将打印机数据重定向到串口或NUL) MODE COMn[:] 波特、奇偶校验、数据、停止、重试(允许为空值) MODE COMn[:] [BAUD[HARD]=...] [PARITY=...] [DATA=...] [STOP=...] [RETRY=...] 波特可以缩写为唯一前缀,奇偶校验可以是o/e/n/s/m, 后 2 平均空间/标记,数据可以是 5..8,停止 1..2。重试被忽略! 计划:重试 b/e/r -> 忙/错误/如果忙则准备好,p/n 无限/不重试。 MODE CON[:] [CP|CODEPAGE] [/STA[TUS]](必须加载 FreeDOS DISPLAY) MODE CON[:] [CP|CODEPAGE] REF[RESH](需要显示) MODE CON[:] [CP|CODEPAGE] SEL[ECT]=number(需要显示) MODE CON[:] [CP|CODEPAGE] PREP[ARE]=((codepage) 文件名) (需要显示) 使用 PREP=((,cp2,cp3,,cp5) ...) 在其他缓冲区中准备代码页。 MODE [40|80|BW40|BW80|CO40|CO80|MONO][,rows](行可以是 25、28、43 或 50) 如果您只想更改字体,请使用 8、14 或 16 作为“行”值。 MODE [CO40|CO80|...],[R|L][,T](CGA左/右移位,T为交互模式) 模式 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。
一个简单的命令来修复我一直使用的窗口大小:
wmic
它将打开 Windows Management Instrumentation 命令行并删除大小限制。然后用Ctrl+关闭它C。
我不知道它背后的历史,但是 PuTTy 的作者的这个愿望清单项目是一篇有趣的帖子,它解释了任何类型的 cmd.exe 替代品所涉及的技术障碍:
http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/win-command-prompt.html
您没有提到您正在寻找替代品,但如果是这样,您还可以查看一些 cmd.exe 替代品,例如Console 2或 JP Software 的 Take Command 等。我在 PuTTy 方面也有一些很好的经验- Cyg 可让您将 PuTTy 用作 cygwin shell。
虽然宽度不受其他答案所示的限制,但我一直觉得很奇怪,可以用鼠标拖动和调整高度,但不能调整宽度。
我认为默认的 80 个字符宽度与假设终端不会超过 80 个字符宽的旧程序的兼容性有关。不过,我不认为这是十年左右的现实原因。
正如其他人指出的那样,它不限于 80 个字符宽,但我猜测它为什么默认为 80 个字符是因为它是 DOS 时代遗留下来的,当时 CRT 显示器的宽度是 80 个字符。
您还可以使用不同的终端应用程序,例如Console2,它允许您根据需要调整窗口大小(除其他事项外,例如透明度,以及使用您喜欢的任何字体的能力)。这是一个很棒的应用程序,我已经切换到它,现在我只cmd.exe
在绝对需要时使用。
它是有限的。一探究竟。(我的意思是窗口大小不是缓冲区)
您会发现您可以设置的最大宽度是有限的,但会根据您的屏幕分辨率而有所不同。如果您的分辨率设置为 1024 x 768,您会发现在命令提示符宽度上只能达到 128。128/1024=.125
你会发现这个比率是一致的。我有一个以 2000x768 运行的 RDP 会话(在我的三台显示器中的两台上),最大宽度为 250。
现在,事实证明它比您的实际显示器尺寸大一点,但我有三台显示器都运行单独的桌面。(所以本质上是 3 个 1024x768 分辨率),如果我想做一些简单的事情,比如在 2 个或更多显示器上拉伸命令提示符,我做不到。(我想用很长的路径做事(diruse.exe/etc.)......
-C
因为它会从左到右以及上下滚动,所以我在系统上做的第一件事就是将我的宽度定义为 180 并保存它。这通常足以使堆栈跟踪不必在大多数情况下进行包装,但也不必太多以至于您要占用大量空间。
当您使用它时,将垂直大小(回滚缓冲区)设置为全 9。你会很高兴有一天你做到了。
因为 MS 在很多事情上都重视“向后兼容性”,在这种情况下,我怀疑这是一个错误的信念,即如果人们没有标准的 80 宽窗口,它会以某种方式让他们感到不安。
当然,这可能是它被编程为固定的 80 个字符宽度,而这几乎是通用的,而且附加的属性设置有点小题大做。
这不是关闭的。所以应该注意的是,Windows Terminal 现在正在改变这一切:
https://github.com/microsoft/terminal https://www.theverge.com/2020/1/9/21059316/microsoft-windows-terminal-crt-effects-retro-search-tabs-features https:// devblogs.microsoft.com/commandline/windows-command-line-backgrounder/ https://github.com/microsoft/terminal/blob/master/doc/terminal-v1-roadmap.md https://www.microsoft.com /en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab
因为改进类 Unix/GNU 开发所需的任何东西的可用性和功能将破坏 Windows 作为微软合作伙伴的商业平台。防止这种情况意味着其他大公司的开发人员产品,例如改进的终端,以及其他一般的第三方产品,例如文字处理器、视频播放器等,不会与现有的 Unix/GNU 软件竞争。没有这个,Windows 就不会成为一个有利可图的平台,微软也将失去其桌面垄断地位。
这就是终端很糟糕的原因,没有 POSIX API,MSVC 中没有 C99 支持,而且名单还在继续。澄清一下,故意不支持常见的 Unix/GNU 技术和开发,以便大型商业软件公司不必与它们竞争。