Есть ли какой-нибудь способ предотвратить стирание текущего ввода CMD пустым предложением истории?

285
Hashim

В интерпретаторе CMD в Windows Upклавиша со стрелкой (↑) заменяет текущий ввод (не уверен, каков точный термин) командами в истории команд; команды, которые были ранее выполнены.

Странная особенность CMD заключается в том, что в свежем случае, когда в истории нет предыдущих команд, случайное нажатие клавиши со стрелкой вверх заменяет текущий ввод последней «командой» в истории; ничего, по сути, очистка ввода. Более того, нажатие Downстрелки (↓) не возвращает к предыдущей команде, поскольку это позволяет нормальное перемещение по истории команд. Вместо этого вы вернулись на круги своя с пустой строкой ввода. По сути, тогда, когда вы набираете первую команду нового экземпляра CMD, клавиша «Вверх» становится клавишей «очистки ввода».

Хотя это кажется относительно мелкой проблемой, которая относится только к очень конкретному сценарию, описанному выше, и является ли это просто странной идиосинкразией CMD или фактической ошибкой, я не могу сосчитать количество раз за последние несколько дней Мы случайно потеряли длинные и сложные команды, пытаясь изучить более продвинутый CMD, и было бы неплохо, если бы было какое-то решение для этого. Кто знает, может быть, это на самом деле «функция, а не ошибка», и что она служит какой-то реальной цели дизайна, которую я пропустил. В любом случае, я был бы признателен за некоторое просветление.

enter image description here

Одно случайное нажатие клавиши вверх (↑) позже ...

enter image description here

1
Хороший вопрос .. Я думаю, это должно было случиться и со мной .. Я действительно никогда не пытался применить какое-либо решение к нему, хотя ... это не ответ, но иногда это может стоить сделать ctrl-c до начала ... или если кто-то еще просматривает ваш экран или вы хотите скопировать / вставить его, то перед командой введите `::` или `rem`, а затем введите. Тогда вы могли бы справиться только тогда, когда он пуст ... (кроме 2-го / 3-го ... подъемов), но да, если вы случайно попали в то время, когда у вас есть что-то в командной строке, вы потеряете это, замечательный момент. Вы можете предпочесть некоторые замены cmd, но я не знаю, решат ли они эту проблему. barlop 7 лет назад 0
опять же не совсем ответ, но есть также f7, который вы можете использовать для истории команд. barlop 7 лет назад 0
@barlop ничего не делает в новой оболочке cmd, а также не будет сохранять никакие команды до тех пор, пока они не будут выполнены. DavidPostill 7 лет назад 1
@DavidPostill Я только что сделал F7 на Windows 7 cmd.exe, он а) делает всплывающее окно со списком команд и б) не сразу удаляет то, что вы набрали. Так что, если вы нажмете F7 и сможете даже перемещаться по нему с помощью клавиш со стрелками, думая, но не выбирайте ничего и просто нажимаете escape, тогда у вас все еще есть то, что вы напечатали. barlop 7 лет назад 0
@barlop OP относится к «** свежему экземпляру, когда в истории нет предыдущих команд **» (как было выше в моем комментарии) DavidPostill 7 лет назад 1
@DavidPostill ok f7 там ничего не делает, но тогда идеал был бы, если бы он ничего не делал (это то, что нужно стрелке вверх), так как никто не хотел бы, чтобы он делал что-то разрушительное, и случайный удар F7 сделает В такой ситуации никакого вреда нет, так как это ничего не даст. Конечно, он спрашивает стрелку вверх, но стоит отметить, что F7 выполняет ту же функцию, но с графическим интерфейсом, и у него нет проблемы немедленной замены того, что было написано в командной строке, если случайно нажать .. barlop 7 лет назад 0
@ barlop Да, он не хочет стрелку вверх в новом окне команд - я полагаю, что легче случайно нажать стрелку вверх, чем f7 .. DavidPostill 7 лет назад 0
@DavidPostill, поэтому я сказал: «Не совсем ответ, но есть также F7». barlop 7 лет назад 0

2 ответа на вопрос

1
Dimblefeck

Вы можете попробовать добавить Clink в вашу среду. Он имеет функцию «Сохранение истории между сеансами», и из моего тестирования (я набрал длинную команду, не выполнил ее, нажал клавишу «вверх», а затем «вниз»), он отображал последнюю использованную команду и вернул длинную команду I ' г набрал.

0
Fredrik Grini

Не так много, если мы не сможем изменить функции консоли dos, но для моего использования, когда я пишу хотя бы длинные строки или сложные вещи, я делаю заметки в каком-то блокноте.

Добро пожаловать в Супер пользователя! Это действительно комментарий, а не ** ответ ** на оригинальный вопрос. Вы всегда можете комментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (https://superuser.com/help/whats-reputation), вы сможете [комментировать любой пост] (https: // superuser. ком / помощь / льготы / комментарий). Пожалуйста, прочитайте [Зачем мне нужно 50 репутации, чтобы комментировать? Что я могу сделать вместо этого?] (Https://meta.stackexchange.com/a/214174) DavidPostill 7 лет назад 1