Come posso fare in modo che il completamento di zsh si comporti come il completamento di Bash?


12

Sono passato a zsh, ma non mi piace il completamento. Se ho 20 file, ognuno con un prefisso condiviso, premendo tab, zsh completerà completamente il primo file, quindi continuerà a scorrere l'elenco con ogni pressione di tab. Se ne voglio uno vicino alla fine, dovrei premere più volte la scheda.

In bash, questo era semplice: premere tab e avrei ottenuto il prefisso. Se continuassi a digitare (e premendo il tasto TAB), bash verrebbe completato per quanto possibile. Trovo che questo comportamento sia molto più intuitivo, ma preferisco le altre funzionalità di zsh a bash.

C'è un modo per ottenere questo stile di completamento? Google ha suggerito setopt bash_autolist, ma questo non ha avuto alcun effetto per me (e nessun messaggio di errore è stato stampato all'avvio della shell).

Grazie.

Risposte:


7

Provare:

setopt autolist
unsetopt menucomplete

Funziona abbastanza bene, non esattamente lo stesso ma è sicuramente qualcosa a cui mi posso abituare. Molte grazie!
nsm

8

Quello che vuoi è probabilmente questo:

setopt noautomenu

1
(10 anni dopo) La risposta accettata non ha avuto (apparente) effetto per me. Era esattamente quello che volevo e quello che sembra essere stato richiesto dall'OP.
Jer

1

C'è un'altra opzione se usi l'opzione "menu select" in .zshrc in questo modo:

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

Sarai in grado di navigare attraverso il risultato con i tasti freccia. Facciamo il tuo esempio con "20 file con un prefisso condiviso":

  • quando si colpisce per la prima volta [TAB], zsh completerà il più possibile e quindi visualizzerà un elenco di possibilità
  • quindi puoi completare come avresti fatto in bash (digita un carattere in più, vai a 0)
  • o digita nuovamente [TAB] e vedrai le possibili scelte evidenziate nel menu sotto il tuo prompt della shell; bonus, puoi navigare nelle possibilità con i tasti freccia

Alla fine per raggiungere l'ultima possibilità:

  • con Bash, nella migliore delle ipotesi, premi [TAB] quindi un carattere aggiuntivo e poi [TAB] di nuovo (forse di più)
  • con Zsh, premi di nuovo [TAB] quindi [TAB] (per accedere al menu), quindi "<-" (tasto freccia sinistra) per raggiungere gli ultimi elementi

In questo caso entrambi sono 3 tratti chiave. Il resto è principalmente una questione di gusti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.