Wählen Sie aus den Abschlussvorschlägen ein bestimmtes Ergebnis aus

10

Angenommen, ich habe 3 Dateien in einem bestimmten Verzeichnis: abc.txt, aww.txt, ant.txt

Wenn ich Folgendes tue: cat a(und die Tabulatortaste drücken, um die Optionen anzuzeigen) zeigt das Terminal die 3 Dateinamen an:abc.txt, aww.txt, ant.txt

Gibt es eine Möglichkeit, das n-te Ergebnis auszuwählen, anstatt es einzugeben, indem Sie die Indexnummer in den Ergebnissen angeben, die auf dem Terminal angezeigt werden?

so etwas wie: cat a2um die zweite Datei ( aww.txt) zu bekommen ?

Samsamara
quelle
Nicht dass ich wüsste. In Zsh können Sie alle möglichen Abschlüsse durchlaufen, die mehrmals auf TAB treffen (dh wenn Sie viermal auf TAB treffen, wird dies abgeschlossen ant.txt). Es kann auch so eingerichtet werden, dass es für eine bessere Navigation rückwärts iteriert werden kann. Das bedeutet natürlich, dass die Shell auf Zsh geändert wird. Wenn Sie das für eine gute Alternative halten, kann ich eine Antwort darauf schreiben.
Kos

Antworten:

11

Angenommen, Sie verwenden Bash, fügen Sie Ihrem Folgendes Folgendes hinzu ~/.bashrc:

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

Um die Standardeinstellungen für alle Programme zu ändern, die die Readline-Vervollständigungsbibliothek verwenden, und nicht nur für Bash, erstellen Sie die Datei ~/.inputrcmit:

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

Wenn Sie jetzt ein neues Terminal öffnen, können Sie drücken:

  • TAB wie gewohnt, um verfügbare Fertigstellungen zu sehen.
  • Pg Dn um die erste Fertigstellung auszuwählen oder zur nächsten zu wechseln.
  • Pg Up um den letzten Abschluss auszuwählen oder zum vorherigen zu wechseln.
  • Alt+ n Pg Dn, um den n-ten Abschluss auszuwählen oder n Abschlüsse vorwärts zu bewegen.

Geben Sie für Ihr Beispiel Pg DnPg Dnoder Alt+ ein 2Pg Dn, um die zweite Datei zu erhalten aww.txt.

Martin Thornton
quelle
Stellen wir uns vor, Sie verwenden cdVerzeichnisse und fahren über diese. Welche Taste drücken Sie, um dieses Verzeichnis auszuwählen und den Inhalt dieses Verzeichnisses zu durchlaufen? Gibt es noch etwas zu setzen / binden?
Tony
Eine Alternative, wenn Sie Ihre Hände nicht zu weit von der Startzeile der Tastatur entfernen möchten, ist die Verwendung von Strg + Alt + P anstelle von PageUp und Strg + Alt + N anstelle von PageDown. Dies kann über bind '"\e\20": menu-complete-backward'und erfolgen bind '"\e\16": menu-complete'.
Ruslan