Gibt es eine Möglichkeit, Bash TAB-freundlicher zu machen?

31

Ich verwende bash sowohl auf meinem Mac als auch als Cygwin-Shell. Insgesamt bin ich sehr zufrieden damit.

Meine einzige Beschwerde ist jedoch, dass die TAB-Vervollständigung nicht so gut ist wie die Windows-Befehlszeilen-TAB-Vervollständigung.

Wenn zum Beispiel zwei Dateien mit demselben Präfix vorhanden sind, ertönt beim Versuch, die TAB-Vervollständigung durchzuführen, nur ein Piepton. Wenn ich weiterhin die Tabulatortaste drücke, wird mir irgendwann eine Liste möglicher Dateien angezeigt.

Ich bevorzuge auf jeden Fall, wie Windows potenzielle Dateien direkt in der Befehlszeile durchläuft.

Gibt es eine Möglichkeit, bash dazu zu bringen, in dieser Hinsicht ähnlich wie Windows Command Line zu arbeiten?

Wenn dies nicht der Fall ist (ich möchte die Shells nicht wechseln), fehlt mir etwas über die TAB-Vervollständigung in Bash? Gibt es eine effizientere Möglichkeit, es zu verwenden?

Frank Krueger
quelle

Antworten:

42

Kopieren Sie Folgendes an eine geeignete Stelle in Ihrer .bashrc-Datei, um das Verhalten "Durchlaufen möglicher Abschlüsse" zu ermitteln:

[[ $- = *i* ]] && bind TAB:menu-complete

Die Bash-Vervollständigung bietet neben der Vervollständigung des Pfadnamens viele weitere Arten der Vervollständigung. Beispielsweise funktioniert menu-complete problemlos mit dem Bash-Completion-Modul von Git, um Befehlsnamen, Optionsnamen usw. zu vervollständigen.

Chris Johnsen
quelle
Wie ist die Vorgehensweise für das OSx-Terminal?
Alex
2
@Alex: Sie bearbeiten die Datei .bashrcin Ihrem Ausgangsverzeichnis so, dass sie die angegebene Zeile enthält. Wenn Ihre .bash_profileDatei (im selben Verzeichnis) keine Zeile wie enthält source ~/.bashrc, sollten Sie sie auch so bearbeiten, dass sie eine solche Zeile enthält. Die Einstellung wird in neuen Terminalfenstern aktiv . Wenn Sie keinen bevorzugten Editor haben, können Sie die Datei mit dem Befehl in TextEdit öffnen open -e ~/.bashrc. Wenn die Datei noch nicht existiert, müssen Sie sie zuerst mit (z touch ~/.bashrc. B.) dem Befehl erstellen .
Chris Johnsen
1
@Alex, Bash ist die Standard-Shell für 10.3 und höher, einschließlich 10.7 (Lion). Erstens echo $SHELL. Dies ist die Shell, die für Ihr Benutzerkonto ausgewählt wurde. Wenn Sie dies nicht möchten, müssen Sie Ihre Shell mit chpass -s /bin/bash(oder einer beliebigen anderen) Shell ändern . Wenn $ SHELL in Ordnung ist, überprüfen Sie Terminal> Einstellungen> Start> Shells öffnen mit: und Terminal> Einstellungen> Einstellungen> Profile> Shell> Start , um festzustellen , ob die Standardbenutzershell mit einem benutzerdefinierten Befehl überschrieben wurde.
Chris Seite
5
Hat jemand eine Idee, was ich binden soll, um mit Shift + Tab eine Option zurück zu gehen?
ppp
3
@ppp in Ihrem .bashrc:bind '"\e[Z":menu-complete-backward'
Tresor