如何更改 Windows 終端機中的命令歷史記錄緩衝區大小

如何更改 Windows 終端機中的命令歷史記錄緩衝區大小

我可以使用首選項更改 CMD.exe 的歷史緩衝區大小:

命令屬性

但是,在 Windows 終端機內執行 CMD shell 時該怎麼做呢?這些設定無處可尋。

編輯

這個問題與 WT「歷史大小」設定無關,該設定記錄為:

歷史規模
這設定了您可以滾動回的視窗中顯示的行數之上的行數。

這相當於 CMD「螢幕緩衝區大小」:

佈局屬性

我問的是輸入的緩衝區命令您可以使用向上和向下箭頭或使用 F7 循環瀏覽,如下所示:

在此輸入影像描述

(如果你在WT內運行的CMD視窗中嘗試,它不會顯示超過50)

答案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 工作階段變更此設定:

  1. winterm_start.cmd使用以下命令在您的 Profile 目錄(或您想要放置它的任何位置)中建立一個檔案(或您想要的任何名稱C:\Users\<username>):

    @echo off
    doskey /listsize=999
    
  2. 開啟 Windows 終端設定

  3. 選擇“命令提示字元”設定檔。

  4. 在下面一般的選項卡(第一個),更改命令列

    從:

    %SystemRoot%\System32\cmd.exe
    

    到:

    %SystemRoot%\System32\cmd.exe /k %UserProfile%\winterm_start.cmd
    

    (當然,如果您更改了檔案名稱/位置,請進行調整)

您開啟的任何新命令提示字元設定檔現在都應該具有擴充的命令歷史記錄(包括F7支援)。

我透過貼上 100 行進行了測試:

echo 1
echo 2
...

....進入 Windows 終端機中的命令提示符沒有這個變化,它只記住了最近的50條指令。透過這一變化,它記住了所有這些(當然,還有更多)。

相關內容