Seleziona un risultato particolare dai suggerimenti di completamento


10

Diciamo che ho 3 file in una directory particolare: abc.txt, aww.txt, ant.txt

Se lo faccio: cat a(e premere tab per vedere le opzioni) il terminale visualizzerà i 3 nomi di file:abc.txt, aww.txt, ant.txt

Esiste un modo per selezionare l'ennesimo risultato anziché digitare, specificando il numero indice nei risultati visualizzati dal terminale?

qualcosa del tipo: cat a2per ottenere il secondo file ( aww.txt)?


Non che ne sia consapevole. In Zsh puoi iterare su tutti i possibili completamenti colpendo TAB più volte (ad esempio, premendo Teg 4 volte verrà completato ant.txt). Può anche essere impostato in modo che sia possibile scorrere indietro per una migliore navigazione. Ciò implica ovviamente cambiare la shell in Zsh. Se consideri un'alternativa abbastanza valida, posso scrivere una risposta per questo.
kos

Risposte:


11

Supponendo che tu stia usando bash, aggiungi quanto segue al tuo ~/.bashrc:

bind '"\e[6~": menu-complete'
bind '"\e[5~": menu-complete-backward'

Oppure per modificare le impostazioni predefinite per tutti i programmi che utilizzano la libreria di completamento readline, non solo bash, creare il file ~/.inputrccontenente:

$include /etc/inputrc
"\e[6~": menu-complete
"\e[5~": menu-complete-backward

Ora quando apri un nuovo terminale, puoi premere:

  • TAB normalmente per vedere i completamenti disponibili.
  • Pg Dn per selezionare il primo completamento o passare al successivo.
  • Pg Up per selezionare l'ultimo completamento o passare a quello precedente.
  • Alt+ n Pg Dnper selezionare l'ennesimo completamento o andare avanti di n completamenti.

Quindi per il tuo esempio digita Pg DnPg Dno Alt+ 2Pg Dnper ottenere il secondo file aww.txt.


Facciamo finta di usare cde scorrere le directory. Quale tasto premi per "selezionare" quella directory e iniziare a scorrere il contenuto di quella directory? C'è un'altra cosa da impostare / associare?
Tony,

Un'alternativa, se non vuoi spostare le mani troppo lontano dalla riga iniziale della tastiera, è usare Ctrl + Alt + P invece di PageUp e Ctrl + Alt + N invece di PageDown, che può essere fatto tramite bind '"\e\20": menu-complete-backward'e bind '"\e\16": menu-complete'.
Ruslan,
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.