Jak mogę sprawić, by uzupełnianie Zsh zachowywało się jak uzupełnianie Bash?

12

Zmieniłem na zsh, ale nie podoba mi się ukończenie. Jeśli mam 20 plików, każdy ze wspólnym prefiksem, po naciśnięciu klawisza zsh ukończy w pełni pierwszy plik, a następnie będzie kontynuować przeglądanie listy przy każdym naciśnięciu klawisza Tab. Jeśli chcę jeden pod koniec, musiałbym nacisnąć klawisz Tab wiele razy.

W bashu było to proste - naciśnij klawisz Tab, a dostanę prefiks. Gdybym kontynuował pisanie (i naciskanie klawisza Tab), bash zakończyłby się tak daleko, jak to tylko możliwe. Uważam, że to zachowanie jest o wiele bardziej intuicyjne, ale wolę inne funkcje zsh od bash.

Czy istnieje sposób na uzyskanie tego stylu ukończenia? Google zasugerował setopt bash_autolist, ale nie miało to dla mnie żadnego efektu (i nie pojawił się komunikat o błędzie po uruchomieniu mojej powłoki).

Dzięki.

nsm
źródło

Odpowiedzi:

7

Próbować:

setopt autolist
unsetopt menucomplete
Wstrzymano do odwołania.
źródło
Działa całkiem dobrze, niezupełnie tak samo, ale na pewno mogę się do tego przyzwyczaić. Wielkie dzięki!
nsm
8

Prawdopodobnie chcesz to:

setopt noautomenu
ggustafsson
źródło
1
(10 lat później) Przyjęta odpowiedź nie przyniosła (widocznego) efektu. Właśnie tego chciałem i wygląda na to, że OP o to prosił.
Jer
1

Istnieje inna opcja, jeśli używasz opcji „menu select” w .zshrc, w następujący sposób:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Będziesz mógł nawigować po wyniku za pomocą klawiszy strzałek. Weźmy przykład z „20 plików ze wspólnym prefiksem”:

  • po pierwszym naciśnięciu [TAB], zsh wykona więcej czynności, a następnie wyświetli listę możliwości
  • możesz albo ukończyć jak w bash (wpisz dodatkowy znak, goto 0)
  • lub wpisz ponownie [TAB], a następnie zobaczysz możliwe opcje podświetlone w menu poniżej zachęty powłoki; bonus, możesz poruszać się po możliwościach za pomocą klawiszy strzałek

Na koniec, aby dotrzeć do ostatniej możliwości:

  • z Bash, w najlepszym razie, naciskasz [TAB], a następnie dodatkowy znak, a następnie [TAB] (może więcej)
  • z Zsh, naciskasz [TAB], a następnie [TAB] ponownie (aby wejść do menu), a następnie „<-” (lewy klawisz strzałki), aby dotrzeć do ostatnich elementów

Oba są w tym przypadku 3 klawiszami. Reszta to głównie kwestia gustu.

jbbarth
źródło