Sélectionnez un résultat particulier parmi les suggestions d'achèvement

10

Disons que j'ai 3 fichiers dans un répertoire particulier: abc.txt, aww.txt, ant.txt

Si je le fais: cat a(et appuyez sur tab pour voir les options) le terminal affichera les 3 noms de fichiers:abc.txt, aww.txt, ant.txt

Existe-t-il un moyen de sélectionner le nième résultat plutôt que de taper, en spécifiant le numéro d'index dans les résultats affichés par le terminal?

quelque chose comme: cat a2pour obtenir le deuxième fichier ( aww.txt)?

samsamara
la source
Pas que je sache. Dans Zsh, vous pouvez parcourir toutes les finitions possibles en frappant TAB plusieurs fois (ieeg en frappant TAB 4 fois se terminera ant.txt). Il peut également être configuré de sorte qu'il est possible d'itérer en arrière pour une meilleure navigation. Cela implique évidemment de changer le shell en Zsh. Si vous considérez que c'est une bonne alternative, je peux vous répondre.
kos

Réponses:

11

En supposant que vous utilisez bash, ajoutez les éléments suivants à votre ~/.bashrc:

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

Ou pour modifier les valeurs par défaut de tous les programmes qui utilisent la bibliothèque de fin de lecture, pas seulement bash, créez le fichier ~/.inputrccontenant:

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

Maintenant, lorsque vous ouvrez un nouveau terminal, vous pouvez appuyer sur:

  • TAB comme d'habitude pour voir les achèvements disponibles.
  • Pg Dn pour sélectionner le premier achèvement ou passer au suivant.
  • Pg Up pour sélectionner la dernière exécution ou passer à la précédente.
  • Alt+ n Pg Dnpour sélectionner le nième achèvement ou avancer de n achèvements.

Donc, pour votre exemple, tapez Pg DnPg Dnou Alt+ 2Pg Dnpour obtenir le deuxième fichier aww.txt.

Martin Thornton
la source
Imaginons que vous utilisez cdet parcourez les répertoires. Sur quelle touche appuyez-vous pour «sélectionner» ce répertoire et commencer à parcourir le contenu de ce répertoire? Y a-t-il autre chose à définir / lier?
Tony
Une alternative, si vous ne voulez pas déplacer vos mains trop loin de la ligne d'accueil du clavier, est d'utiliser Ctrl + Alt + P au lieu de PageUp et Ctrl + Alt + N au lieu de PageDown, ce qui peut être fait via bind '"\e\20": menu-complete-backward'et bind '"\e\16": menu-complete'.
Ruslan