Настройте клавиши «вверх» и «вниз» для соответствия функциональности cmd (момент времени)

Настройте клавиши «вверх» и «вниз» для соответствия функциональности cmd (момент времени)

Как настроить Bash так, чтобы клавиши «вверх» и «вниз» были такими же, как в cmd?

Например

$echo command1
$echo command2
$echo command3
$echo command4

И в Bash, и в cmd нажатие , , , ENTERзапустит echo command2.

Однако последующее нажатие клавиши «вниз» в cmd перейдет сразу к следующей команде, т. е echo command3. Нажатие клавиши «вниз» в Bash ничего не делает. cmd сохраняет историю на определенный момент времени (аналогично кнопкам «Назад» и «Вперед» в веб-браузере), а Bash — нет.

Аналогично с cmd, двойное нажатие клавиши вверх в cmd возвращает echo command1, тогда как в Bash это же действие возвращает echo command3.

Много раз мне хотелось бы извиниться за некоторые цепочки команд, которые я ранее ввел по порядку. В cmd очень удобно, что я могу прокрутить историю назад к первой из последовательности, а затем, , ENTER, , ENTER, , ENTER...

Однако я не могу найти подобный способ сделать это в Bash. Возможно ли модифицировать ~/.inputrcили какой-то другой файл каким-то образом, чтобы добиться этого?

решение1

Хотя лично я бы не хотел этого делать, поскольку привык к истории bash, но я понимаю, почему люди хотят этого. Я уже рассматривал это раньше, для коллеги на работе, который был новичком в *nix и хотел получить функциональность DOS в xterm, и тогда, как и сейчас, решения, похоже, не было.

Я только что провел еще один тщательный поиск и не нашел ничего очевидного, кроме:

Как ни странно, есть много способов сделать cmd более похожим на bash, например,Функция, похожая на историю Bash, для командной строки Windows, но к сожалениюА не наоборот.

Основная проблема заключается в том, что, если говорить (слишком) просто, функциональность клавиш курсора (и то, как она взаимодействует с историей) встроена в исходный код Bash, и скрипты, псевдонимы и функции оболочки не могут переопределить этот факт 1. Вам потребуетсяпереписаноbash, с различными [переключаемыми?] встроенными функциями клавиш курсора, своего рода «DOSBash», если можно так выразиться.

Возможно, есть возможность заполнить нишу на рынке, и кто-то в конечном итоге удовлетворит эту потребность, но я бы не стал на это надеяться.


1 Если я не прав и можно переопределить функциональность клавиш курсора простым изменением файла ресурсов, я был бы рад, если бы кто-нибудь мог меня поправить.

решение2

Прием, который я использую, заключается в том, чтобы просто повторять одно и то же количество раз :

$ echo command1
$ echo command2
$ echo command3
$ echo command4

Если я хочу повторить последовательность от echo command 2до echo command4, я просто нажимаю 3 раза, чтобы перейти к echo command2, затем еще 3 раза, чтобы перейти к , echo command3и еще 3 раза, чтобы перейти к echo command4.

Таким образом, если вы вернулись на N элементов в своей истории, нажав N раз, повторное нажатие N раз будет каждый раз возвращать вас к следующей команде, поскольку была вставлена ​​новая команда, которую вы выполнили.

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