Баш автозаполнение типа зш

28

Я использую bash, но мне хотелось бы иметь автозаполнение в стиле zsh (вы нажимаете на вкладку, а он просматривает возможности), а не на то, что, кажется, делает bash, то есть отображает список возможностей, но не выбирает ничего, пока я не наберу еще немного для устранения неоднозначности. Как я могу получить поведение типа Zsh в Bash?

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

(И чтобы ответить на очевидный вопрос, мне нужно использовать bash здесь, потому что я только что присоединился к команде, и они делают некоторые вещи, чтобы настроить bash, чтобы сделать среду более удобной для работы. Возможно, я в конечном итоге смогу убедиться, что она работает так же в zsh, но сейчас проще, если я использую bash и просто веду себя как zsh во время интерактивного использования.)

G Гордон Уорли III
источник

Ответы:

22

я использую

bind 'TAB:menu-complete'

достичь этого

Ciclamino
источник
11
Когда я добавляю это в мой .bashrc, вкладка циклически перебирает возможные варианты, а не выводит их в терминал. Возможно ли получить оба поведения?
Антониос Хаджигеоргалис
Для Shitf-Tabзавершения в обратном направлении используйте bind '"\e[Z":menu-complete-backward'.
Айнар-Г
24

Чтобы получить первое завершение и список, вы можете добавить следующее в bashrc

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'

show-all-if-ambiguous: Это изменяет поведение по умолчанию функций завершения. Если установлено значение «вкл.», Слова, которые имеют более одного возможного завершения, приводят к немедленному отображению совпадений, а не к звонку. Значением по умолчанию является «off».

см. Bash Manual для получения дополнительной информации.

Редактировать:

Это не заставляет bash работать точно так же, как zsh tho. Zsh завершится до следующего неоднозначного матча. Bash будет просто проходить все матчи.

например

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh: завершится до ~ / .bash и покажет список совпадений, который позволяет добавить _ и <tab>снова нажать .
  • bash: просто перебирает все совпадения ~ / .ba *.
ingkebil
источник
8
Мне понравилось использовать клавиши со стрелками и визуальную индикацию автозаполнения zsh. Есть ли способ получить такое поведение с помощью bash? Я переключаюсь назад для лучшей совместимости сервера
CESCO
2

В ответ на ответ ingkebil , для тех, кто положил bindи setв inputrc:

$ tail -n 4 /etc/inputrc
# zsh like completion:
# /superuser/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

Мне нравится содержать себя в .bashrcчистоте.

bartekbrak
источник