13

В bash команда Ctrl+r очень полезна, я набираю Ctrl+r whatever и она ищет в моей истории команды, содержащие whatever слово. Но если я whatever что-нибудь и пойму, что хотел бы найти это слово и нажать Ctrl+r, то ничего не произойдет.

Есть ли способ удара ключ и с его вести себя так , как будто я напечатал Ctrl+R whatever вместо того , чтобы whatever - либо Ctrl+R?

У меня есть следующее в моем .inputrc:

"\C-p": history-search-backward

но это работает, только если начало строки совпадает.

2 ответа2

12

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

Предположим, вы только что набрали curl -I http://superuser.com и забыли сначала набрать Ctrl+r :

$ curl -I http://superuser.com

Если вы хотите выполнить i-поиск по своей истории, сначала перейдите к началу строки (Ctrl+a), введите i-search (Ctrl+r) и введите Ctrl+y. Поиск должен выполняться с использованием содержимого всего текста, который вы уже набрали:

(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq

Кроме того, вы можете использовать Ctrl+w вместо Ctrl+y для поиска, используя только первое слово текста, который вы только что ввели:

(reverse-i-search)`curl': curl -I http://superuser.com/faq

Связать все это с одним ключом

Если вы хотите сделать все это одним нажатием клавиши, вы можете привязать одну клавишу к макросу клавиатуры. Если вы хотите использовать, скажем, F12, запустите:

$ bind '"\e[24~":"\C-a\C-r\C-y"'

Это будет продолжаться на сессии.

Делая это постоянным

Просто определите макрос в вашем ~/.inputrc:

"\e[24~":"\C-a\C-r\C-y"

Обратите внимание, что здесь мы опускаем одинарные кавычки.

Вы можете найти этот ответ полезным.

0

Сохранить четыре удара:

Избегайте второго Ctrl-R , добавив к вашему .bashrc (или к вашему .inputrc если хотите):

bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r

Это отобразит ALT-R в CTR-A CTR-R CTR-Y CTR-R

Описание:

  • ALT-R: обязательный ключ. Еще один хороший вариант - \C-xr (CTR-X CTR-R)
  • CTR-A: перейти к началу строки (запоминание написанного)
  • CTR-R: начать обратный поиск
  • CTR-Y: вставить то, что CTR-A запомнил как часть поиска
  • CTR-R: покажет обратный поиск с символами до сих пор

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .