答案1
首先,一些術語可以讓我們達成共識:
這相當於CMD“螢幕緩衝區大小”
雖然大多數人認為此對話方塊是 CMD 的一部分,但它實際上是「Windows 控制台主機」(conhost.exe
或「ConHost」),Windows 終端機旨在取代舊版(20 多年)的 Windows 終端應用程式。
您也可以看到在 Windows 控制台主機中執行的任何其他基於終端機的應用程式(例如 PowerShell 或 WSL)中引用的「命令記錄」選項。然而,只有當託管 CMD shell 時,該設定才能真正控制命令歷史記錄長度。
那是,引用一位 Windows Terminal 開發人員的話(他也負責維護 ConHost):
這是一個我們不打算再犯的建築錯誤。
這是壞消息。好消息是您應該能夠使用其他功能複製此功能。正如另一位 Microsoft 團隊成員在同一 Github 執行緒中所說:
記住命令列客戶端執行的命令不是終端機的責任。這就是我們的責任殼。
而且,作為一個 shell,CMD 本身實際上確實通過doskey.exe
.例如:
doskey /listsize=999
這會將命令記錄大小設為 999,覆蓋 ConHost 中設定的任何內容,以及您在 Windows 終端機中看到的預設大小 50。
您可以透過以下方式為 Windows 終端機中的所有 CMD 工作階段變更此設定:
winterm_start.cmd
使用以下命令在您的 Profile 目錄(或您想要放置它的任何位置)中建立一個檔案(或您想要的任何名稱C:\Users\<username>
):@echo off doskey /listsize=999
開啟 Windows 終端設定
選擇“命令提示字元”設定檔。
在下面一般的選項卡(第一個),更改命令列。
從:
%SystemRoot%\System32\cmd.exe
到:
%SystemRoot%\System32\cmd.exe /k %UserProfile%\winterm_start.cmd
(當然,如果您更改了檔案名稱/位置,請進行調整)
您開啟的任何新命令提示字元設定檔現在都應該具有擴充的命令歷史記錄(包括F7支援)。
我透過貼上 100 行進行了測試:
echo 1
echo 2
...
....進入 Windows 終端機中的命令提示符沒有這個變化,它只記住了最近的50條指令。透過這一變化,它記住了所有這些(當然,還有更多)。