Как изменить размер буфера истории команд в Windows Terminal

Как изменить размер буфера истории команд в Windows Terminal

Я могу изменить размер буфера истории CMD.exe, используя настройки:

Свойства CMD

Но как это сделать при запуске оболочки CMD внутри Windows Terminal? Эти настройки нигде не найдены.

Редактировать:

Этот вопрос не имеет ничего общего с настройкой WT «Размер истории», которая задокументирована следующим образом:

Размер истории
Это устанавливает количество строк, на которые можно вернуться, прокручивая окно выше отображаемых.

Это эквивалент CMD «размер буфера экрана»:

Свойства макета

Я спрашиваю о буфере введенных данных.командыкоторые можно переключать с помощью стрелок вверх и вниз или с помощью клавиши F7, например:

введите описание изображения здесь

(Если вы попробуете это в окне CMD, запущенном внутри WT, больше 50 не отобразится)

решение1

Сначала немного терминологии, чтобы мы понимали друг друга:

Это эквивалент CMD «размер буфера экрана».

Хотя большинство людей считают этот диалог частью CMD, на самом деле это «Windows Console Host» ( conhost.exeили «ConHost»), устаревшее (более 20 лет) терминальное приложение для Windows, на замену которому призван Windows Terminal.

Вы также можете увидеть опцию «История команд», на которую вы ссылаетесь в любом другом терминальном приложении, которое вы запускаете в Windows Console Host, например PowerShell или WSL. Однако только при размещении оболочки CMD эта настройка фактически управляет длиной истории команд.

И это было,процитирую одного из разработчиков Windows Terminal(который также отвечает за поддержание ConHost):

архитектурная ошибка, подобную которой мы не намерены повторять.

Это плохие новости. Хорошие новости в том, что вы сможете повторить эту функциональность с другими функциями. Как сказал один из других членов команды Microsoft в той же теме Github:

Терминал не обязан запоминать команды, выполненные клиентом командной строки. Это обязанностьоболочка.

И, как оболочка, CMD сама по себе имеет эту функциональность через doskey.exe. Например:

doskey /listsize=999

Это установит размер истории команд равным 999, переопределив все, что установлено в ConHost, а также размер по умолчанию, равный 50, который вы видите в Терминале Windows.

Вы можете изменить это для всех сеансов CMD в Windows Terminal следующим образом:

  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 команд. С этим изменением он запомнил их все (и больше, конечно).

Связанный контент