Автозаполнение истории стилей FreeBSD в bash

1096
Derek

Я ищу способ сделать так, чтобы моя оболочка 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
Вы можете использовать csh на Ubuntu :) rici 10 лет назад 0

1 ответ на вопрос

4
rici

Вы должны быть в состоянии сделать это, повторно связав клавиши со стрелками в вашем профиле 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это прямой инкрементальный поиск), который в некоторой степени эквивалентен, но не привязывает поиск по истории в начале строки. (Кроме того, вы должны помнить, чтобы набрать его первым.)

Похожие вопросы