Warum ist die Windows-Datei cmd.exe auf 80 Zeichen begrenzt?

104

Ich liebe es, mein Terminal unter Unix zu dehnen. Was ist die Geschichte oder der Grund hinter der Windows Lame-Befehlszeile?

Minze
quelle
2
Es ist eine Wahl, genau wie viele andere Dinge Entscheidungen sind. Wenn Sie eine feste Größe haben, ist es einfacher, "Ihren Bildschirm" zu gestalten, da Sie die Grenzen genau kennen. Die Nachteile liegen auf der Hand: Unabhängig von der gewählten Größe ist dies für jemanden oder etwas immer falsch. Der aktuelle Windows CMD-Bildschirm war früher der einzige Bildschirm. Und es waren nicht viele Auflösungen verfügbar und nur sehr wenige hochauflösende.
TVCa

Antworten:

147

Ist es nicht. Sie können mit der rechten Maustaste auf die Titelleiste klicken, Eigenschaften auswählen und auf der Registerkarte "Layout" die Bildschirmpuffergröße (Zeilenbreite und Bildlauf) und die Fenstergröße (Ansichtsfenstergröße) ändern. Wenn Sie cmd über eine Verknüpfung gestartet haben, können Sie diese Einstellungen für zukünftige Sitzungen speichern.

erickson
quelle
2
Schrift / Farbe nicht vergessen. Nichts ist so schön, als zu einigen Retro-Greenscreens zurückzukehren, wenn ich meine Eingabeaufforderung öffne. 8 ^ D
Dillie-O
13
Sie meinen, "nichts anderes als die Schriftart in Konsolen zu ändern" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy
5
Ich springe immer hinein und stelle die Breite auf 180 und den Scrollback auf 9999 ein. Es ist nicht so, dass du es sehr oft brauchst, aber ich habe nie etwas verletzt (selbst in den Tagen von 128-MB-Maschinen und dem einen Mal, wenn du es brauchst, Sie werden WIRKLICH froh sein, dass Sie es vorab eingestellt haben. Die Breite ist eine persönliche Präferenz. Ich mag es nicht, Zeilenumbrüche von meinem Compiler zu sehen, außer unter extremen Bedingungen, aber andere scrollen nie gern.
Bill K
4
Das Erhöhen der Bildschirmpufferhöhe wird sehr unterschätzt. Diese Art des Bildlaufs ist allzu oft erforderlich, um die Ausgabe eines Programms vollständig auf dem Bildschirm lesen zu können (es sei denn, Sie verwenden MEHR).
Codierung mit Stil
22
Nun ja ... aber nein. Sie können die Größe des Fensters nicht willkürlich ändern, indem Sie die Fensterkante ziehen. Hier sind wir im Jahr 2012 und es hat sich immer noch nicht geändert.
Alex B
108

Wenn Sie mausphobisch sind, können Sie dies auch einfach in das cmd-Fenster eingeben:

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.
jmucchiello
quelle
11
Dies war sehr hilfreich bei der Bearbeitung eines Systemaufrufs von "cmd / c ..." in einer App, die die Größe des Fensters auf Formatierung seiner Ausgabe überprüft. Wirf gerade einen "Modus 200,50 &&", bevor der Anruf und das Leben gut sind
Thomas
Sie verlieren jedoch die vertikale Schriftrolle, zumindest auf Win7
Golimar
44

Es ist nicht begrenzt.

  1. Führen Sie cmd.exe aus
  2. Klicken Sie auf das Symbol oben links auf dem Bildschirm.
  3. Wählen Sie Eigenschaften
  4. Wählen Sie die Registerkarte Layout.
  5. Stellen Sie die Puffer- und Fensterbreiten nach Ihren Wünschen ein.
  6. OK klicken
  7. Wählen Sie Eigenschaften für zukünftige speichern ...
  8. OK klicken.

Vielleicht möchten Sie die Konsole auschecken . Es ist eine Open Source-App, mit der Sie mehrere Shells in einer Umgebung mit Registerkarten ausführen können. Sie können auch die Alpha-Transparenz der Shells einstellen.

Tim Stewart
quelle
17

RE: Weil MS Wert auf "Abwärtskompatibilität" für viele Dinge legt und ich in diesem Fall vermute, dass es eine fehlgeleitete Überzeugung ist, dass es die Leute irgendwie nerven wird, wenn sie nicht ihr Standardfenster mit einer Breite von 80 haben.

Die Abwärtskompatibilität funktioniert jedoch ziemlich schrecklich. Ich kann mir nicht vorstellen, dass Microsoft die Implementierung ziemlich gründlich durchgeführt hat, und ich glaube, Microsoft ist der Aushängeschild, um sicherzustellen, dass neuere Versionen auf älteren Versionen nicht funktionieren. Unter COMMAND.COM funktioniert vieles nicht richtig, was die Nützlichkeit erheblich beeinträchtigt, ganz zu schweigen davon, dass Sie DOSONLY eingeben müssen, damit einige Programme ordnungsgemäß ausgeführt werden. Außerdem hat Microsoft nützliche Befehle entfernt. Ehrlich gesagt kann ich mir nicht vorstellen, dass Microsoft die "Abwärtskompatibilität" sehr schätzt.

Darüber hinaus denke ich, dass der wahre Grund, warum die Zeilenlänge bei einem Standard von 80 Spalten liegt, darin besteht, dass die meisten Befehlszeilenprogramme usw. unter der Annahme arbeiten, dass der Benutzer an einer Eingabeaufforderung mit 80 Spalten begrenzt ist, was bedeutet, dass eine Erhöhung der Breite dazu führen kann Formatierungsfehler oder schlimmer noch, möglicherweise brechen Programme insgesamt.

Wie von jmucchiello erwähnt, funktioniert MODE gut, um die Größe des Fensters zu ändern, wenn Sie Lust dazu haben.

Konfiguriert Systemgeräte.

Serielle Schnittstelle: 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]

Gerätestatus: MODE [Gerät] [/ STATUS]

Umleitungsdruck: MODE LPTn [:] = COMm [:]

Codepage auswählen: MODE CON [:] CP SELECT = JJJ

Codepage-Status: MODE CON [:] CP [/ STATUS]

Anzeigemodus: MODE CON [:] [COLS = c] [LINES = n]

Typematische Rate: MODE CON [:] [RATE = r DELAY = d]

Wenn Sie DOSONLY auf Ihrer CONFIG.NT aktiviert haben, erbt COMMAND.COM jedoch eine korrekte Linienauflösung im DOS-Stil von cmd.exe, Sie können MODE jedoch nicht in COMMAND.COM aufrufen. Wenn Sie die Größe in COMMAND.COM ändern möchten, müssen Sie folgende 16-Bit-Montageanweisungen verwenden:

80x50 Zeilenauflösung (Kein Framebuffer, kein SVGA, praktisch universell unterstützt.)

DEBUGGEN
A100
MOV AX, 1112
INT 10
INT 20

G
Q.

132x60 Zeilenauflösung (Kein Framebuffer, erfordert SVGA. Funktioniert nicht auf ATI-Gfx-Karten, funktioniert normalerweise auf nVidia-Gfx-Karten, afaict funktioniert immer auf integrierten Intel-Gfx-Karten.)

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

G Q.

Wenn Sie dies in Ihre COMMAND.COM eingeben, erhalten Sie die angegebene Auflösung. (Warnung: Wenn Ihr Monitor alt genug ist, um den Modus nicht zu unterstützen, wird er möglicherweise zerstört. Randnotiz: Wenn Sie Windows ausführen können, sollte Ihr Monitor in Ordnung sein. Haftungsausschluss: Der Schwerpunkt sollte und Sie wurden gewarnt Es ist also nicht mein Problem, wenn Ihr Monitor brät. ;-) Wenn Sie dies jedoch ohne DOSONLY verwenden, wird COMMAND.COM die Größe der vorherigen Größe sofort nach der Anwendung zurücksetzen (in diesem Fall, es sei denn, Sie haben es an a geschrieben Datei und ausgeführt, dass DEBUG) beendet wird. http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

Alternativ können Sie auch MODE.COM von FreeDOS verwenden, das unter COMMAND.COM, das auf DOSONLY eingestellt ist, ordnungsgemäß ausgeführt wird. Sie können es entweder vom Disk-Image auf der offiziellen Website (freedos.org) abrufen oder unter herunterladen

Neuer FreeDOS-MODUS von Eric Auer 2003-2005. Lizenz: GPL. (Version 12may2005)
MODE [Gerät] [/ STA [TUS]] (Status eines oder aller Geräte anzeigen)
MODE LPTn [:] cols [, [lines] [, retry]] (cols oder cpi, 6/8 lpi, retry p oder n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (Wiederholungsversuch: p unendlich / n keine)
MODE LPTn [:] = [COMn [:] | NUL] (Druckerdaten an serielle Schnittstelle oder NUL umleiten)
MODE COMn [:] Baud, Parität, Daten, Stopp, Wiederholung (leere Werte erlaubt)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Baud kann mit einem eindeutigen Präfix abgekürzt werden, die Parität kann o / e / n / s / m sein
  letztere 2 bedeuten Leerzeichen / Markierung, Daten können 5..8 sein, Stopp 1..2. Wiederholungsversuch wird ignoriert!
  GEPLANT: Wiederholen Sie b / e / r -> beschäftigt / Fehler / bereit, wenn beschäftigt, p / n unendlich / keine Wiederholung.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY muss geladen sein)
MODE CON [:] [CP | CODEPAGE] REF [RESH] (muss angezeigt werden)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = Nummer (muss angezeigt werden)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((Codepage) Dateiname) (benötigt DISPLAY)
  Verwenden Sie PREP = ((, cp2, cp3 ,, cp5) ...), um Codepages in anderen Puffern vorzubereiten.
MODUS [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, Zeilen] (Zeilen können 25, 28, 43 oder 50 sein)
  Verwenden Sie 8, 14 oder 16 als Zeilenwert, wenn Sie nur die Schriftart ändern möchten.
MODUS [CO40 | CO80 | ...], [R | L] [, T] (CGA nach links / rechts verschieben, T ist interaktiver Modus)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = Wert
  Der Wert kann sein: + oder - für die Sperren oder ein Zeichen für den Switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (mögliche Werte hängen von Ihrer Hardware ab)
MODE CON [:] [RATE = ...] [DELAY = ...] (Standardrate 20, Standardverzögerung 1)
  Die Rate kann 1..32 für 2..30 Zeichen / Sek. Sein, die Verzögerung kann 1..4 für 1 / 4..4 / 4 Sek. Sein.

Aus den gleichen Gründen wie beim von mir bereitgestellten ASM-Code wird das Fenster nach dem Beenden von MODE.COM sofort auf die vorherige Größe zurückgesetzt, es sei denn, Sie führen es in COMMAND.COM aus, wobei DOSONLY zu Ihrer CONFIG.NT-Datei hinzugefügt wurde.

Wie bereits erwähnt, können Sie diese Einstellungen auch ändern, indem Sie mit der rechten Maustaste auf die Titelleiste der Eingabeaufforderung klicken und Eigenschaften -> Layout ändern. Ebenso können Sie die Auflösung für Verknüpfungen auf CMD.EXE und Batchdateien festlegen (Rechtsklick auf die Verknüpfung -> Eigenschaften -> Layout). Dies funktioniert nur für CMD.EXE, nicht jedoch für COMMAND.COM.

Codierung mit Stil
quelle
14

Ein einfacher Befehl zum Festlegen der Fenstergröße, die ich ständig verwende:

wmic

Daraufhin wird die Windows Management Instrumentation-Befehlszeile geöffnet und die Größenbeschränkungen entfernt. Dann schließen Sie es einfach mit Ctrl+ C.

Mijacr
quelle
6

Ich kenne die Geschichte dahinter nicht, aber dieser Artikel auf der Wunschliste des Autors von PuTTy ist ein interessanter Beitrag, der die technischen Hürden erklärt, die mit jeder Art von cmd.exe-Ersatz verbunden sind, der nicht lahm ist:

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

Sie erwähnen nicht, dass Sie nach einem Ersatz suchen, aber wenn ja, können Sie sich auch einige der cmd.exe-Ersetzungen wie Console 2 oder JP Software's Take Command usw. ansehen. Ich habe auch einige gute Erfahrungen mit PuTTy- gemacht. Cyg, mit dem Sie PuTTy als Cygwin-Shell verwenden können.

Jay
quelle
6

Obwohl die Breite nicht begrenzt ist, wie andere Antworten zeigen, fand ich es immer seltsam, dass man die Höhe mit der Maus ziehen und ihre Größe ändern kann , aber nicht die Breite .

Ich denke, die Standardbreite von 80 Zeichen hängt mit der Kompatibilität mit alten Programmen zusammen, bei denen davon ausgegangen wird, dass das Terminal nicht breiter als 80 Zeichen ist. Ich denke jedoch nicht, dass dies seit etwa einem Jahrzehnt ein realistischer Grund ist.

Greg Hewgill
quelle
9
Sowohl die Breite als auch die Höhe können in der Größe geändert werden. Es kommt nur vor, dass die Standardfensterbreite der Pufferbreite entspricht. Sie können das Fenster nicht größer als den Puffer machen, daher besteht die einzige Option (mit der Standardeinstellung von 80 Spalten) darin, die Breite zu verringern.
Efotinis
4

Wie andere bereits betont haben, ist es nicht auf 80 Zeichen beschränkt, aber meine Vermutung, warum es standardmäßig 80 Zeichen enthält, ist, dass es aus den DOS-Tagen übrig geblieben ist, als CRT-Anzeigen 80 Zeichen breit waren.

Siehe auch

Patrick Manschette
quelle
Kann ein moderner Monitor im Textmodus breiter als 80 Zeichen sein?
Macropas
Möglicherweise müssen Sie mit einem Framebuffer-Modus arbeiten, damit dies funktioniert (aber ich kann mich irren, es ist eine Weile her.)
andersop
Es gibt einige SVGA-Modi mit einer Breite von 132 Zeichen, ohne einen Framebuffer-Modus zu verwenden, aber sie werden ziemlich willkürlich unterstützt. Einer dieser Modi ist in meiner Antwort aufgeführt.
Codierung mit Stil
3
Es geht noch weiter zurück: Der Grund, warum IBM seine CRT-Anzeigen 80 Spalten breit machte, war, dass seine Lochkarten 80 Spalten breit waren.
dan04
2

Sie können auch eine andere Terminalanwendung verwenden, z. B. Console2 , mit der Sie die Größe des Fensters nach Belieben ändern können (z. B. Transparenz und die Möglichkeit, eine beliebige Schriftart zu verwenden). Es ist eine großartige Anwendung, ich habe darauf umgestellt und jetzt benutze ich sie nur, cmd.exewenn ich unbedingt muss.

Sasha Chedygov
quelle
1

Da es sowohl von links nach rechts als auch nach oben und unten scrollen wird, definiere ich als erstes auf einem System meine Breite als 180 und speichere sie. Das ist im Allgemeinen genug, damit Stapelspuren nicht zum größten Teil gewickelt werden müssen, aber nicht so sehr, dass Sie eine Menge Platz beanspruchen.

Stellen Sie währenddessen die vertikale Größe (Scrollback-Puffer) auf alle 9 ein. Du wirst froh sein, dass du es eines Tages getan hast.

Bill K.
quelle
1

Weil MS Wert auf "Abwärtskompatibilität" für viele Dinge legt und ich in diesem Fall vermute, dass es eine fehlgeleitete Überzeugung ist, dass es die Leute irgendwie nerven wird, wenn sie nicht ihr Standardfenster mit einer Breite von 80 haben.

Natürlich könnte es sein, dass es für eine feste Breite von 80 Zeichen programmiert wurde, wenn dies ziemlich universell war, und die zusätzlichen Eigenschafteneinstellungen waren ein bisschen wie ein Hack.

Draemon
quelle
1

Es ist begrenzt. Hör zu. (Ich meine Fenstergröße NICHT Puffer)

Sie werden feststellen, dass die maximale Breite, die Sie einstellen können, begrenzt ist, jedoch je nach Bildschirmauflösung variiert. Wenn Ihre Auflösung auf 1024 x 768 eingestellt ist, können Sie nur in der Breite der Eingabeaufforderung 128 erreichen. 128/1024 = .125

Sie werden feststellen, dass dieses Verhältnis auf ganzer Linie konsistent ist. Ich habe eine RDP-Sitzung mit 2000 x 768 (auf zwei meiner drei Monitore) und erhalte eine maximale Breite von 250.

Nun, das ist tatsächlich etwas größer als Ihre Actaul-Monitorgröße, aber ich habe drei Monitore, auf denen alle einzelne Desktops laufen. (also im Wesentlichen 3 Auflösungen von 1024 x 768) und wenn ich etwas SO EINFACHES tun möchte, um eine Eingabeaufforderung auf zwei oder mehr Monitore zu verteilen, kann ich das nicht. (Ich möchte, wenn ich Dinge mit sehr langen Pfaden mache (diruse.exe / etc.) ...

-c


quelle
2
Wenn Sie Ihre Schriftgröße verkleinern, können Sie (relativ) größere Fenstergrößen erhalten. Ich habe gerade eine Breite von über 300 auf einem 1600x1200-Bildschirm erreicht.
Michael Myers
Sie können Ihre Linienbreite noch vergrößern und durch das Fenster scrollen. Ich habe meine seit VGA-Tagen 160 oder 180 breit gemacht.
Bill K
0

Dies ist nicht geschlossen. Es sollte also beachtet werden, dass Windows Terminal jetzt all dies ändert:

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 / de-de / p / windows-terminal-vorschau / 9n0dx20hk701? activetab = pivot: Übersichtstabelle

rferrisx
quelle
-1

Weil die Verbesserung der Benutzerfreundlichkeit und Funktionalität von allem, was eine Unix / GNU-ähnliche Entwicklung erfordert, Windows als kommerzielle Plattform für Microsoft-Partner untergräbt. Um dies zu verhindern, müssen die Produkte anderer großer Unternehmen für Entwickler, wie z. B. verbesserte Terminals, und andere allgemeine Produkte von Drittanbietern wie Textverarbeitungsprogramme, Videoplayer usw. nicht mit der vorhandenen Unix / GNU-Software konkurrieren. Ohne dies wäre Windows keine profitable Plattform, und Microsoft würde sein Desktop-Monopol verlieren.

Aus diesem Grund ist das Terminal scheiße, es gibt keine POSIX-API, keine C99-Unterstützung in MSVC und die Liste geht weiter. Zur Verdeutlichung werden gängige Unix / GNU-Technologien und -Entwicklungen absichtlich nicht unterstützt, damit große kommerzielle Softwarehäuser nicht mit ihnen konkurrieren müssen.

Matt Joiner
quelle