Jak mogę uzyskać autouzupełnianie zsh, aby uzupełniać symbole wieloznaczne, tak jak robi to bash?

3

W Zsh i Bash, jeśli wpiszesz ls c<TAB>, wyświetla każdą nazwę pliku zaczynającą się na c. Jeśli zamiast tego piszę ls c*<TAB>, bash zachowuje się w ten sam sposób, ale zsh zastępuje c*listą każdego pliku zaczynającego się na c. Czy jest jakiś sposób, aby Zsh zachowywał się tak, jak bash?

m42a
źródło

Odpowiedzi:

4
setopt GLOB_COMPLETE

Od man zshoptions:

GLOB_COMPLETE

Gdy bieżące słowo ma wzorzec globalny, nie wstawiaj wszystkich słów wynikających z rozwinięcia, ale generuj dopasowania jak dla zakończenia i przełączaj je, jak MENU_COMPLETE. Dopasowania są generowane tak, jakby „*” zostało dodane na końcu słowa lub wstawione pod kursorem, gdy ustawione jest COMPLETE_IN_WORD. W rzeczywistości używa dopasowania wzorca, a nie globowania, więc działa nie tylko w przypadku plików, ale także w przypadku dowolnego uzupełnienia, takiego jak opcje, nazwy użytkownika itp.

Zauważ, że gdy używany jest dopasowywanie wzorca, nie można użyć kontroli dopasowania (na przykład rozróżnianie wielkości liter lub dopasowanie zakotwiczone). To ograniczenie ma zastosowanie tylko wtedy, gdy bieżące słowo zawiera wzorzec; samo włączenie opcji GLOB_COMPLETE nie ma tego efektu.

mkarasek
źródło
To po prostu zastępuje wzorzec pierwszym dopasowaniem, a nie wszystkimi dopasowaniami. Chcę tylko wyświetlić listę dopasowań.
m42a
Jeśli nadal naciskasz kartę, powinna ona cyklicznie przewijać mecze. Jeśli nie wyświetla się również lista dopasowań, być może będziesz musiał zepsuć opcje uzupełniania zsh.
mkarasek
Nie chcę jednak przełączać opcji, chcę je tylko wymienić.
m42a
@ m42a: Czy kiedykolwiek wymyśliłeś, jak to zrobić?
@ m42a, możesz chcieć ustawić menu_completei auto_list.
PythonNut