readline: предлагает ли неинкрементный поиск что-то, чего не может инкрементный поиск?

readline: предлагает ли неинкрементный поиск что-то, чего не может инкрементный поиск?

Я часто использую инкрементный поиск (Ctl-r/Ctl-s) в bash и нахожу его невероятно полезным.

Я заметил, что Meta-p (Esc p) запускает неинкрементальный поиск, и мне интересно, какой цели он служит, учитывая существование его инкрементального эквивалента. Есть ли у него какие-то трюки в рукаве, которые я упускаю из виду? Может быть, он быстрее, если у вас огромная история команд?

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

решение1

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

Также эффективность. Сейчас не так уж и велика, но в старые времена, я могу себе представить, что выполнение инкрементального поиска было бы намного медленнее.

решение2

Я на самом деле нашел действительно приятную функцию неинкрементального поиска. По умолчанию Readline связывает:

  • M-nкnon-incremental-forward-search-history
  • M-pкnon-incremental-reverse-search-history

Это отстой, ИМХО. Но Readlineтакжеимеет еще одну пару функций неинкрементного поиска, без привязок по умолчанию:

  • history-search-forward
  • history-search-backward

Поиск вперед/назад по истории строки символов между началом текущей строки и точкой.

Они на самом деле довольно полезны. Я привязал их к M-nи M-p, заменив неинкрементальные функции по умолчанию.

Если я начал вводить команду и решил поискать соответствующую запись в истории, я могу нажать Escape p(поскольку у меня на самом деле нет клавиши Meta).

Повторные нажатия циклически возвращают назад и Escape nснова вперед.

Связанный контент