Autouzupełnianie Bash jak zsh

28

Używam bash, ale chciałbym mieć autouzupełnianie w stylu zsh (naciskasz klawisz Tab i to tabuluje możliwości), zamiast tego, co wydaje się robić bash, który wyświetla listę możliwości, ale nie wybieram niczego, dopóki nie piszę trochę więcej do jednoznacznego. Jak mogę uzyskać zachowanie typu Zsh w bash?

Poszukiwanie rozwiązania przyniosło wiele odpowiedzi na inne pytania, więc mam nadzieję, że uzyskam tutaj prostą odpowiedź (tj. Co wkleić do mojego .bashrc).

(Aby odpowiedzieć na oczywiste pytanie, muszę użyć bash tutaj, ponieważ właśnie dołączyłem do zespołu, a oni robią pewne rzeczy, aby skonfigurować bash, aby ułatwić pracę w środowisku. Prawdopodobnie mogę w końcu upewnić się, że działa tak samo sposób w Zsh, ale na razie jest łatwiej, jeśli używam bash i po prostu sprawiam, że zachowuje się bardziej jak zsh podczas interaktywnego używania).

G Gordon Worley III
źródło

Odpowiedzi:

22

używam

bind 'TAB:menu-complete'

aby to osiągnąć

Ciclamino
źródło
11
Kiedy dodam to do mojego .bashrc, tab przechodzi przez możliwe opcje, zamiast wyświetlać je w terminalu. Czy można uzyskać oba zachowania?
Antonios Hadjigeorgalis,
Aby Shitf-Tabwykonać wstecz, użyj bind '"\e[Z":menu-complete-backward'.
Ainar-G,
24

Aby uzyskać pierwsze ukończenie i listę, możesz dodać następujące elementy do bashrc

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

show-all-if-niejednoznaczny: Zmienia to domyślne zachowanie funkcji uzupełniania. Jeśli ustawione na „włączone”, słowa, które mają więcej niż jedno możliwe uzupełnienie, powodują natychmiastowe wyświetlanie dopasowań zamiast dzwonienia dzwonka. Wartość domyślna to „wyłączony”.

zobacz Bash Instrukcja uzyskać więcej informacji.

Edytować:

To nie sprawia, że ​​bash działa dokładnie tak , jak Zsh Tho. Zsh zakończy się do następnego niejednoznacznego meczu. Bash po prostu przejdzie przez wszystkie mecze.

na przykład

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

  • zsh: zakończy się do ~ / .bash i wyświetli listę dopasowań, która z łatwością umożliwia dodanie _ i <tab>ponowne naciśnięcie .
  • bash: przejdzie przez wszystkie dopasowania ~ / .ba *.
ingkebil
źródło
8
Podobało mi się używanie klawiszy strzałek i wizualnego wskazania autouzupełniania zsh. Czy istnieje sposób na uzyskanie tych zachowań za pomocą bash? Wracam z powrotem dla lepszej kompatybilności serwera
CESCO
2

Nawiązując do ingkebil odpowiedź jest dla tych, które wprowadzone bindi setdo inputrc:

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

Lubię dbać o .bashrcczystość.

Bartekbrak
źródło