Bash эквивалент Tcsh ESC-p для перехода к команде, начиная с того, что вы набрали до сих пор

Недавно я сделал безумно долгосрочный переход с tcsh на bash. Единственное, что я пропустил, это tcsh ESC + p: Начните вводить команду, а затем нажмите ESC + p (на самом деле я нашел эквивалентный ctrl- [p проще набрать), и он перескакивает на самую последнюю команду в вашей истории, которая начинается с того, что вы набрали до сих пор.

Возможно, лучший ответ - просто привыкнуть к bash Ctrl + r, но пока мне это не нравится. Я часто начинаю вводить команду, а затем мне приходит в голову, что я ее выдал раньше. С помощью функции tcsh я мог бы сделать ESC + p + Enter, чтобы повторно ее опубликовать. Это так быстро, что я обычно никогда не использовал стрелку вверх для чего-либо большего, чем 2 команды назад.

Пример того, где я нашел его особенно приятным: Длинные команды часто начинаются с точки, потому что они имеют форму

./myprogram.pl -lots -of -args -and -switches

В tcsh я бы выпустил такую ​​команду, а затем, возможно, ls, less, tail, whatever, а затем переиздал длинную команду, 4 клавиши: dot, escape, p, enter.

Как это сделать в Bash? Или, чтобы сделать это конкретным, какое меньшее количество нажатий клавиш в bash сказать "повторить последнюю команду, начатую с точки"? Может ли он соответствовать или бить tcsh 4?

Ответ 1

Добавьте это в свой ~/.inputrc файл:

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Это приведет к тому, что PageUp будет действовать как tcsh Esc + p, а PageDown перейдет через список.

Вместо этого вы можете привязать \ep. Если вы используете PageUp/PageDown, вам может потребоваться посмотреть, какую последовательность символов вы создадите на клавиатуре/терминале. Просто нажмите Ctrl + V, затем PageUp, и вы увидите ^[[5~, если он будет таким же, как \e[5~.

Ответ 2

Я был в той же лодке, что и вам, нужно переключиться на bash с tcsh.

Я только что создал новый файл ~/.inputrc следующим образом и все отлично работает!

$ cat ~/.inputrc
"\ep": history-search-backward
"\en": history-search-forward

Ответ 3

Ну, вы можете сделать

!.

Это три символа (включая Enter). Конечно, в общем случае вы можете заменить точку уникальным идентификационным префиксом по вашему выбору.

Ответ 4

Лично я предпочитаю ctrl-r - это интерактивный поиск по истории - проверьте его, возможно, вам понравится. Последующие нажатия ctrl-r переходят к следующему совпадению.