Bash si completa automaticamente come zsh


28

Sto usando bash, ma mi piacerebbe avere il completamento automatico in stile zsh (fai clic su tab e fa scorrere le schede attraverso le possibilità), piuttosto che ciò che sembra fare bash, che è un elenco di possibilità ma non scegliere nulla finché non scrivo un po 'di più per chiarire. Come posso ottenere il comportamento del tipo zsh in bash?

La ricerca di una soluzione ha prodotto molte risposte ad altre domande, quindi spero di poter ottenere una risposta semplice qui (cioè cosa incollare nella mia .bashrc).

(E per rispondere all'ovvia domanda, ho bisogno di usare bash qui perché mi sono appena unito a un team e fanno alcune cose per impostare bash in modo da rendere l'ambiente più facile da lavorare. Probabilmente posso eventualmente assicurarmi che funzioni allo stesso modo in zsh, ma per ora è più facile se uso bash e faccio in modo che si comporti più come zsh durante l'uso interattivo.)

Risposte:


22

Io uso

bind 'TAB:menu-complete'

per raggiungerlo


11
Quando aggiungo questo al mio .bashrc, la scheda scorre ciclicamente le possibili opzioni anziché elencarle nel terminale. È possibile ottenere entrambi i comportamenti?
Antonios Hadjigeorgalis,

Per Shitf-Tabcompletare all'indietro, utilizzare bind '"\e[Z":menu-complete-backward'.
Ainar-G,

24

Per ottenere il primo completamento e un elenco, è possibile aggiungere quanto segue a bashrc

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

show-all-if-ambiguous: modifica il comportamento predefinito delle funzioni di completamento. Se impostato su 'on', le parole che hanno più di un possibile completamento fanno immediatamente elencare le corrispondenze invece di suonare il campanello. Il valore predefinito è "off".

vedere il Manuale di Bash per ulteriori informazioni.

Modificare:

Questo non fa funzionare bash esattamente come zsh tho. Zsh completerà fino alla prossima partita ambigua. Bash scorrerà semplicemente tutte le partite.

per esempio

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh: completerà fino a ~ / .bash e presenterà un elenco di corrispondenze che ti consente di aggiungere _ e premere di <tab>nuovo.
  • bash: scorrerà semplicemente tutte le partite ~ / .ba *.

8
Mi è piaciuto usare i tasti freccia e l'indicazione visiva del completamento automatico di zsh. C'è un modo per ottenere quei comportamenti con bash? Ritornerò per una migliore compatibilità del server
CESCO,

2

Seguendo la risposta di ingkebil , per coloro che hanno inserito binde setinserito inputrc:

$ tail -n 4 /etc/inputrc
# zsh like completion:
# /superuser/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

Mi piace tenermi .bashrcpulito.

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.