Windows ターミナルでコマンド履歴のバッファ サイズを変更する方法

Windows ターミナルでコマンド履歴のバッファ サイズを変更する方法

設定を使用して、CMD.exe の履歴バッファ サイズを変更できます。

CMDプロパティ

しかし、Windows ターミナル内で CMD シェルを実行している場合はどうすればよいでしょうか? これらの設定はどこにも見つかりません。

編集:

この質問は、次のように文書化されている WT の「履歴サイズ」設定とは関係ありません。

履歴サイズ
これにより、ウィンドウに表示されている行の上の何行までスクロールして戻ることができるかが設定されます。

これは CMD の「画面バッファ サイズ」に相当します。

レイアウトプロパティ

入力されたバッファについて質問していますコマンド上矢印と下矢印、または F7 を使用して次のように切り替えることができます。

ここに画像の説明を入力してください

(WT 内で実行されている CMD ウィンドウで試すと、50 を超える数は表示されません)

答え1

まず、共通の理解を得るためにいくつかの用語を説明します。

これはCMDの「画面バッファサイズ」に相当します。

ほとんどの人はこのダイアログを CMD の一部と考えていますが、実際には、conhost.exeWindows ターミナルが置き換えるように設計された、Windows 用のレガシー (20 年以上) ターミナル アプリケーションである「Windows コンソール ホスト」(または「ConHost」) です。

PowerShell や WSL など、Windows コンソール ホストで実行する他のターミナル ベースのアプリケーションで参照する「コマンド履歴」オプションも表示されます。ただし、CMD シェルをホストしている場合にのみ、その設定によって実際にコマンド履歴の長さが制御されます。

そしてそれは、Windowsターミナル開発者の一人の言葉を引用すると(ConHost の保守も担当)

このような建築上のミスは、二度と起こしたくないものです。

それは悪いニュースです。良いニュースは、この機能を他の機能で再現できるはずだということです。同じ Github スレッドで、他の Microsoft チーム メンバーの 1 人が次のように言っています。

コマンドラインクライアントによって実行されたコマンドを記憶するのはターミナルの責任ではありません。それはシェル

そして、シェルとして、CMD 自体には実際に を通じてこの機能がありますdoskey.exe。例:

doskey /listsize=999

これにより、コマンド履歴のサイズが 999 に設定され、ConHost で設定されている内容と、Windows ターミナルに表示される既定のサイズ 50 が上書きされます。

Windows ターミナルのすべての CMD セッションに対してこれを変更するには、次の手順を実行します。

  1. winterm_start.cmdプロファイル ディレクトリ (または任意の場所) に、次のコードを使用してファイル (または任意の名前) を作成します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 個のコマンドのみが記憶されるようになりました。この変更により、すべてのコマンドが記憶されるようになりました (もちろん、それ以上のコマンドも)。

関連情報