1

Я ищу способ сделать так, чтобы моя оболочка Ubuntu Bash имела такой же вид завершения истории, как вы получаете с помощью csh во FreeBSD.

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

например, если история содержала

 1  ls -al
 2  yes
 3  ls -altr
 4  ls
 5  history

и я ls и нажимаю стрелку вверх / вниз, он будет циклически проходить через ls ls -al и ls -altr

Как я могу реализовать такое же поведение в Ubuntu Bash?

1 ответ1

4

Вы должны быть в состоянии сделать это, повторно связав клавиши со стрелками в вашем профиле bash. По умолчанию стрелки вверх и вниз привязаны к previous-history и next-history ; Я считаю, что поведение, которое вы ищете, - это history-search-backward и history-search-forward , которые по умолчанию не привязаны ни к одному ключу.

Следующие команды сделают привязку:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

(при условии, что ваш эмулятор терминала выполняет (одно из) стандартных сопоставлений клавиш со стрелками.)

previous-history и next-history , по умолчанию, также связаны с ctrl+P и ctrl+N, но в моем быстром эксперименте возникла небольшая проблема совместимости между next-history и history-search-backward Это может быть просто проблема с версией readline я установил.

bash также предлагает обратный инкрементальный поиск в истории (ctrl+R ; ctrl+S - прямой инкрементальный поиск), который в некоторой степени эквивалентен, но не привязывает поиск в истории в начале строки. (Кроме того, вы должны помнить, чтобы набрать его первым.)

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