Когда бы я ни ударил Ctrl+р в моей командной строке кажется, что у меня есть 10 миллисекунд, чтобы закончить ввод того, что я ищу, и в этот момент он ищет все, что я набрал до сих пор.
Также, похоже, отсутствуют набранные мной команды.
Кроме того, когда я нажимаю escape после такого неудачного поиска, он помещает в мою командную строку все глупости, которые он нашел. Как мне вернуться к пустой командной строке?
Также как пролистать результаты поиска?
Если обратный поиск не может быть лучше, есть ли лучший способ поискать в моей истории?
«I» в «reverse-i-search» означает «инкрементный», поэтому поиск выполняется по мере ввода. Если вы хотите, чтобы он подождал, пока вы не закончите ввод, вы можете использовать history-search-backward
(не связан) или non-incremental-reverse-search-history
(привязан к Meta-p). Чтобы использовать эти функции, вы сначала вводите текст, а затем нажимаете клавишу, которая вызывает функцию.
у меня есть history-search-backward
привязан к PgUp, а «history-search-forward» привязан к PgDn.
Как вы знаете, чтобы завершить поиск, нажмите Esc. Чтобы прервать поиск, оставив пустую командную строку, нажмите Ctrl-G.
Если у тебя есть очень долгая история, могла быть причиной задержки. Переменные HISTSIZE и HISTFILESIZE используются bash для установки максимального размера истории.
Также проверьте переменную HISTIGNORE на наличие игнорируемых (т.е. не занесенных в историю) команд. Например, я настроил игнорировать такие команды, как ls или выход которые мне не нужны в моей истории.
Чтобы «прокрутить» результаты поиска, продолжайте нажимать Ctrl-r (назад) или Ctrl-s (вперед). Однако будьте осторожны, Ctrl-s часто используется для "блокировки" терминала (с Ctrl-Q для разблокировки), поэтому вам, возможно, придется переназначить что-то другое. Вы можете использовать что-то вроде
stty stop ^G
чтобы сопоставить Ctrl-g с блокировкой терминала и освободить ярлык Ctrl-s, используемый bash (для поиска вперед в истории).