Ich kann die Größe des Verlaufspuffers von CMD.exe mithilfe der Einstellungen ändern:
Aber wie kann ich das machen, wenn ich eine CMD-Shell im Windows-Terminal ausführe? Diese Einstellungen sind nirgends zu finden.
Bearbeiten:
Diese Frage hat nichts mit der WT-Einstellung „Verlaufsgröße“ zu tun, die wie folgt dokumentiert ist:
Verlaufsgröße
Dadurch wird die Anzahl der Zeilen über den im Fenster angezeigten Zeilen festgelegt, zu denen Sie zurückblättern können.
Dies ist das Äquivalent der CMD „Bildschirmpuffergröße“:
Ich frage nach dem Puffer der eingegebenenBefehleSie können mit den Auf- und Ab-Pfeilen oder mit F7 wie folgt durchgehen:
(Wenn Sie es in einem CMD-Fenster versuchen, das innerhalb von WT ausgeführt wird, werden nicht mehr als 50 angezeigt.)
Antwort1
Zunächst einige Begriffe, damit wir uns einig sind:
Dies entspricht der CMD „Bildschirmpuffergröße“
Die meisten Leute denken zwar, dass dieser Dialog Teil von CMD ist, aber eigentlich handelt es sich dabei um den „Windows Console Host“ ( conhost.exe
oder „ConHost“), die ältere (über 20 Jahre alte) Terminalanwendung für Windows, die durch Windows Terminal ersetzt werden soll.
Sie können die Option „Befehlsverlauf“ auch in jeder anderen terminalbasierten Anwendung sehen, die Sie im Windows Console Host ausführen, z. B. PowerShell oder WSL. Allerdings steuert diese Einstellung nur dann tatsächlich die Länge des Befehlsverlaufs, wenn Sie eine CMD-Shell hosten.
Und das war,um einen der Windows Terminal-Entwickler zu zitieren(der auch für die Wartung von ConHost verantwortlich ist):
ein architektonischer Fehler, den wir nicht noch einmal machen wollen.
Das sind die schlechten Nachrichten. Die gute Nachricht ist, dass Sie diese Funktionalität mit anderen Features replizieren können sollten. Wie ein anderes Microsoft-Teammitglied im selben Github-Thread sagte:
Es liegt nicht in der Verantwortung des Terminals, sich die von einem Kommandozeilen-Client ausgeführten Befehle zu merken. Das liegt in der Verantwortung desHülse.
Und als Shell verfügt CMD selbst tatsächlich über diese Funktionalität doskey.exe
. Beispiel:
doskey /listsize=999
Dadurch wird die Größe des Befehlsverlaufs auf 999 festgelegt und alle in ConHost festgelegten Werte sowie die Standardgröße von 50, die im Windows-Terminal angezeigt wird, überschrieben.
Sie können dies für alle CMD-Sitzungen im Windows-Terminal ändern, indem Sie:
Erstellen Sie eine Datei
winterm_start.cmd
(oder wie auch immer Sie sie nennen möchten) in Ihrem ProfilverzeichnisC:\Users\<username>
(oder wo auch immer Sie sie platzieren möchten) mit:@echo off doskey /listsize=999
Öffnen des Windows-TerminalsEinstellungen
Auswahl des Profils „Eingabeaufforderung“.
Unter demAllgemein(die erste), ändern Sie dieBefehlszeile.
Aus:
%SystemRoot%\System32\cmd.exe
Zu:
%SystemRoot%\System32\cmd.exe /k %UserProfile%\winterm_start.cmd
(Natürlich anpassen, wenn Sie den Dateinamen/Speicherort geändert haben)
Jedes neue Eingabeaufforderungsprofil, das Sie öffnen, sollte jetzt über einen erweiterten Befehlsverlauf (einschließlich F7Support) verfügen.
Ich habe dies getestet, indem ich 100 Zeilen von folgendem eingefügt habe:
echo 1
echo 2
...
... in eine Eingabeaufforderung im Windows-Terminalohnediese Änderung und es wurden nur die letzten 50 Befehle gemerkt. Mit dieser Änderung werden alle (und natürlich noch mehr) gemerkt.