24

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

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

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

3 ответа3

22

Чтобы получить первое завершение и список, вы можете добавить следующее в 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 *.
21

я использую

bind 'TAB:menu-complete'

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

2

Следуя ответу ingkebil , для тех, кто помещает bind и set в inputrc:

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

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

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