Мне бы хотелось иметь функцию автозаполнения в bash, которая бы перебирала все варианты, как в zsh, и одновременно выполняла бы обычную операцию, то есть выводила бы все варианты, предполагая, что их не слишком много, а в противном случае подтверждала бы выбор перед печатью.
Эти 2 не должны быть взаимоисключающими. Я знаю, как заставить его циклически проходить по возможностям (bind 'TAB:menu-complete'), но он теряет первую функцию.
Кроме того, мне было интересно, можно ли вернуться назад (что-то вроде shift+tab, как во многих других программах), потому что очень раздражает необходимость проходить весь цикл заново.
решение1
Для получения данной функциональности необходимо записать в ~/.inputrc
файл следующие строки:
# cycle forward
Control-k: menu-complete
# cycle backward
Control-j: menu-complete-backward
Таким образом, вы сохраните текущее поведение Tab. Есть также еще один параметр конфигурации, который вы, возможно, захотите добавить:
# display one column with matches
set completion-display-width 1
Он отображает возможности в одном столбце, поэтому вместо:
file1 file2 file3 file4...
или
file1 file3 ...
file2 file4
Вы получаете:
file1
file2
file3
file4
...
на мой вкус, гораздо приятнее для глаз.
Для получения дополнительной информации см. man readline
или посетитеВеб-сайт библиотеки GNU Readline.