Невозможно переслать историю поиска Bash так же, как с CTRL-r

203

Я пытаюсь искать в моей истории bash так же, как с CTRL- r, но в направлении вперед.

Мне было больно, когда я слишком часто нажимал CTRL- rснова найти предыдущую команду.

Как вы можете выполнить поиск в своей истории Bash так же, как при обратном поиске?

Лео Леопольд Герц 준영
источник

Ответы:

321

Вы также можете искать вперед. Из руководства bash info " 8.2.5 Поиск команд в истории ":

Для поиска в истории определенной строки введите C-r. Ввод C-sищет вперед по истории.

Проблема с Ctrl-S, однако, заключается в том, что иногда сталкивается с управлением потоком XON / XOFF (например, в Konsole). Однако поиск - это функция readline, и вы должны иметь возможность привязать ее к какой-то другой клавише. Обновление: проще и лучше просто отключить XON / XOFF, запустив

stty -ixon
hlovdal
источник
4
Это замечательно, но я добавляю stty -ixon в свой .profile, и он не работает для новых вкладок. Есть идеи, как заставить это работать? Я бы хотел, чтобы XON / XOFF был отключен по умолчанию.
Джон Галлахер
13
В случае, если у кого-то еще есть та же проблема, что и у меня - если вы добавите это в .profile, это не вступит в силу. Только когда вы добавляете его в .bash_profile, волшебство происходит! Спасибо за отличный совет - это сводило меня с ума в течение многих лет.
Джон Галлахер
12
@JohnGallagher Важно отметить , что .bash_profileи .profileпоставляются только для лог-в оболочках. Я хотел бы положить это в .bashrc(из которого я источник .profile).
Виктор Заманян
13
[[ $- == *i* ]] && stty -ixonможно использовать, чтобы избежать описанной здесь
mMontu
3
Если вы используете PuTTY и не можете / не хотите поддерживать .bash_profileна каждой машине, к которой вы подключаетесь, этот ответ для суперпользователя сработает.
августа
41

Лучший трюк ИМХО это с помощью pgupи pgdown. просто положи это в свой~/.inputrc

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

Выйти из системы / войти, ввести первые буквы, а затем pgupили pgdownдля поиска по истории

ctrl-R поиск по всем строкам, содержащим слова, тогда как поиск по истории с перемоткой вперед, начиная со слов

Эрик Бургхард
источник
2
Вы также можете раскомментировать эти 2 строки /etc/inputrc(например, в Ubuntu).
falconepl
2
Я предпочитаю привязывать это к стрелкам вверх и вниз: "\ e [A": history-search-backward и "\ e [B": history-search-forward
shmup
Что если это не повлияет на bash?
Сёрен
26

Возможно, вы захотите попробовать https://github.com/dvorka/hstr, который позволяет выполнять фильтрацию истории Bash «предложить стиль коробки» с (необязательным) упорядочением по метрикам, т.е. он намного более эффективен и быстрее как в прямом, так и в обратном направлении:

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

Это может быть легко связано с Ctrl-rи / илиCtrl-s

Мартин Дворжак
источник
5
Я влюблен. Краткие инструкции по установке на Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan
14

Я обычно нажимаю ESCв терминале, а затем >. По крайней мере, он сбрасывается, и тогда вы можете попробовать щелкнуть менее часто CTRL+ R.

Эйад Эбрахим
источник
s / click / press / Кроме того, вам нужно дважды нажать escape (первый раз, чтобы выйти из поиска в обратном направлении).
Croad Langshan