Jak sprawić, aby zakończenie Zsh działało bardziej jak zakończenie BASH?


18

Jestem niedawną konwersją z bash na zsh (z której używam „oh my zsh” z), ale jedno mnie denerwuje:

Po naciśnięciu klawisza tab, pierwsze autouzupełnianie jest wypełniane automatycznie, a ty musisz cyklicznie wykonywać uzupełnienia, naciskając kilkakrotnie klawisz tab.

Różni się to od bash, gdzie właśnie pokazano listę zakończeń. Jeśli wszystkie uzupełnienia mają ten sam prefiks, wówczas ten prefiks jest wypełniany. Możesz wybrać ten, który chcesz, kontynuując pisanie.

Uważam, że to drugie jest lepsze, ponieważ jest szybsze pisanie niż wybieranie uzupełnienia przez kilkakrotne naciśnięcie klawisza Tab.

Czy jest jakiś sposób, aby uzupełnienie zsh działało bardziej jak bash pod tym względem?

Odpowiedzi:


18
setopt noautomenu
setopt nomenucomplete

Potrzebujesz ich obu. Jeśli naciśniesz klawisz Tab wystarczającą ilość razy, otrzymasz listę ukończeń, ale nigdy nie dodasz żadnych znaków do tego, co wpisałeś do tej pory.


4

Nie sądzę, że jest to zachowanie domyślne, ale możesz je wyłączyć, używając:

setopt +o menucomplete

Inne ustawienia, które wpływają na ten problem na różne sposoby to: autolist, automenu, bashautolist, listambiguous. Aby man zshoptionsuzyskać szczegółowe informacje, zobacz sekcję „Zakończenie” . Możesz dodać to polecenie do swojego ~/.zshrcpliku.

Możesz skonfigurować wiele innych rzeczy interaktywnie, wykonując:

autoload -U compinstall
compinstall

i postępując zgodnie z instrukcjami i menu.

W Basha to zachowanie jest sterowany przez wiązanie Tabdo completelub menu-completew ~/.inputrc:

"\C-i": complete   # do list completion

lub z linii poleceń lub w ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion

1
meta komentarz: jak udało ci się tak wyglądać „tab”?
Dobra osoba

2
@Dobra osoba:<kbd>Tab</kbd>
Wstrzymano do odwołania.
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.