Один ярлык для прямого поиска после Ctrl-R обратного поиска

13

Я использую Ctrl+ Rвсе время, но часто заканчиваю тем, что пропускаю команду, которую выполняю, так как нажимаю ее так быстро.

Для поиска в прямом направлении, Ctrl+ Sможет быть использовано при условии , что не используется терминальным первым (Konsole в моем случае, в котором stty -ixonв ~/.bashrcзатруднительном его).

Тем не менее, я должен нажать на него дважды: один раз, когда он появляется, i-searchнаходясь в reverse-i-searchрежиме, и второй раз, чтобы фактически сделать шаг назад.

Есть ли способ убрать необходимость двойного нажатия на ярлык?

jozxyqk
источник
3
Как и в случае с Ctrl-R, первый Ctrl-S ожидает строку для поиска. Второй использует ту же строку поиска, которую вы использовали ранее (с Ctrl-R в вашей ситуации). Я не знаю, как избежать этих двух шагов. readlineне хватает функции "искать ту же строку в обратном направлении".
xhienne

Ответы:

11

Вот другой подход. Если вам удобны некоторые основные команды редактирования vi, bash поддерживает режим vi для редактирования командной строки. Если вы действительно ненавидите vi, вам это не понравится. Но если вы можете терпеть это, вы можете найти это предпочтительным и с меньшим количеством нажатий клавиш.

set -o vi

История поиска работает так:

  • Esc войти в командный режим
  • / начать поиск
  • Введите текст строки поиска
  • Enter выполнить поиск
  • n перейти к следующему матчу
  • N чтобы вернуться к предыдущему матчу
  • i чтобы вернуться в режим вставки
  • Enter запустить команду
MikeLRoy
источник
Эквивалентами в стиле vi для Ctrl-R и Ctrl-S являются nи N, соответственно. И они не требуют постукивания дважды. Интригующий!
Натаниэль М. Бивер
2

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

Тем не менее, вы можете установить hstr (https://github.com/dvorka/hstr), в котором есть окно подсказки с расширенными параметрами поиска для простого просмотра, навигации, поиска и управления историей команд:

введите описание изображения здесь

dr01
источник