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 переходят к следующему совпадению.