Я могу изменить размер буфера истории CMD.exe, используя настройки:
Но как это сделать при запуске оболочки 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 следующим образом:
Создайте файл
winterm_start.cmd
(или назовите его как хотите) в каталоге вашего профиля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 команд. С этим изменением он запомнил их все (и больше, конечно).