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

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

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

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

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

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

Как я могу сделать это в Bash?Или, чтобы конкретизировать, каково наименьшее количество нажатий клавиш в bash, чтобы сказать «повторить последнюю команду, начавшуюся с точки»?Это может соответствовать или побить tcsh's 4?

Ответы [ 4 ]

10 голосов
/ 21 июня 2010

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

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

$ cat ~/.inputrc
"\ep": history-search-backward
"\en": history-search-forward
9 голосов
/ 21 июня 2010

Добавьте это к вашему ~/.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 голосов
/ 22 июня 2010

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

2 голосов
/ 21 июня 2010

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

!.

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

...