Come rendere il completamento automatico del terminale quando ci sono diversi file / directory?

24

Se ho diverse directory, come:

afoo abar

a volte il mio terminale rifiuterà il completamento automatico quando premo la scheda (ad esempio "cd a", quindi scheda), e stampo invece l'elenco delle directory. A volte emette anche un suono rumoroso e fastidioso. Qualche idea su come renderlo autocompletato in casi come questo? Ad esempio, può mostrare prima abar e poi afoo se premo di nuovo il tab. Ho visto questo è il caso in Windows, o qualche applciazione in Ubuntu

    
posta TifatulS 11.04.2013 - 16:57

2 risposte

31

Qualcosa che per me è un risparmiatore di vita è avere un giro di fortuna tra le possibilità invece di mostrare una lista stupida.

Poiché bash utilizza readline per il completamento automatico, aggiungi le seguenti righe a ~/.inputrc

Una volta che sei soddisfatto e hai eseguito un test completo per alcuni giorni / settimane, taglia e incolla (non copiare!) le stesse impostazioni da ~/.inputrc a /etc/inputrc che contiene le impostazioni a livello di sistema, rendendolo disponibile a tutti gli utenti del tuo sistema (incluso guest).

Il codez:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

quindi exit del tuo terminale (o terminale remoto come stucco) e riaprilo ...

Esempi:

  1. Quando hai 3 file: file1 , file2 e file3 e scrivi:

    e fTabTabTab

    passerà in rassegna:

    e file1
    e file2
    e file3
    

    e quando vuoi tornare indietro, premi Maiusc + Tab

  2. Quando digiti:

    very-complicated-command with lots of command line parameters
    

    e la prossima volta che avrai bisogno dello stesso comando, dovrai solo digitare:

    very

    e digiterà per te:

    very-complicated-command with lots of command line parameters
    

Questo ti farà risparmiare un sacco di tempo in bash! ; -)

    
risposta data Fabby 11.04.2015 - 09:32
16

Dopo la prima scheda devi inserire più lettere. Quindi se scrivi

cd a

e premi scheda non ottieni nulla e dopo una seconda scheda (immediatamente successiva) ottieni un elenco dei nomi che iniziano con a e poi devi inserire un f per farlo completare automaticamente il resto in modo

cd a scheda scheda 'f' scheda scheda

genererà

cd afoo
    
risposta data Rinzwind 11.04.2013 - 17:08

Leggi altre domande sui tag