Autouzupełnianie Bash: najpierw wyświetl listę plików, a następnie je przeglądaj


27

Czy można skonfigurować bash w taki sposób, aby na pierwszej zakładce autouzupełniania wyświetlał wszystkie możliwe pliki, a przy kolejnych cyklach dokonywał wyborów?

Obie opcje są łatwe do zrobienia osobno i mógłbym powiązać je z różnymi kluczami, ale powyższe byłoby idealne, ale nie mogę nic na ten temat znaleźć w sieci.


3
Minęło trochę czasu, odkąd korzystałem z ZSH, ale wierzę, że takie funkcje autouzupełniania są takie.
jordanm,

1
@jordanm Cóż, wydaje się być opcją, jeśli nic innego nie działa, ale pociągałoby to za sobą aktualizację wszystkiego, od .bashrc itp. do ekwiwalentów ZSH, których chciałbym uniknąć.
Voo

Odpowiedzi:


31

To wydaje się bliskie temu, czego chcesz:

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

1
Prawie idealnie, oprócz niewielkiej wady, która automatycznie uzupełnia się również na pierwszej karcie, co może być trochę denerwujące, jeśli próbuję tylko ustalić dokładną nazwę (tj. Muszę usunąć o wiele więcej znaków, jeśli chcę więc zmieńcie się), ale jestem gotów z tym żyć.
Voo

1
Jak można to łatwo cofnąć?
dingalapadum

1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris

13
@Voo dodaj trzeci wiersz bind "set menu-complete-display-prefix on"wyświetli listę kandydatów na pierwszej karcie bez automatycznego uzupełniania.
Naitree,

2
@Naitree nie może wystarczająco głosować za twoją sugestią. Działa i JEST, więc o wiele lepszy niż domyślne zachowanie bash. Dziękuję Ci.
JBeurer,

1

Tego używam. O ile mogę powiedzieć, robi dokładnie to, co chcesz.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Działa to na komputerach Mac (10.13 i 10.14) i Ubuntu (16.04 i 18.04).


0

Czy rozważałeś? Odwołano się do niego w Superuser ...

[[ $- = *i* ]] && bind TAB:menu-complete

1
menu-completeto tylko połowa tego, co zadaje pytanie. Jak mówi pytanie: „[inne] opcje są łatwe do zrobienia osobno” .
jw013,

Tak, wiem, jak zmienić zachowanie na jedną z dwóch opcji, ale to łatwa część. Prawdziwy problem polega na tym, jak połączyć oba w jedno.
Voo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.