Wie bekomme ich eine farbige Tab-Vervollständigung?

17

Gibt es eine Möglichkeit, bei Verwendung der Tabulatorvervollständigung in einem Terminal eine Farbausgabe zu erhalten? Meine Farben sind überall in Ordnung, daher weiß ich, dass ich ein Farbterminal erfolgreich aktiviert habe.

Bash in Ubuntu verwenden (10.10).

Ryan
quelle
Wie legen Sie eine "farbige Ausgabe bei Verwendung der Registerkartenvervollständigung" fest?
Slhck

Antworten:

21

Es gibt in Bash keine Möglichkeit, die Ausgabe während der Fertigstellung zu färben, wie dies in fish und zsh der Fall ist. Man könnte Vervollständigungsfunktionen schreiben, die Farbkontrollsequenzen ausgeben, aber Sie müssten Kopien der vorgeschlagenen Vervollständigungen mit und ohne Farbcodes pflegen oder entfernen, wenn der Benutzer eine Auswahl trifft, da Bash die Auswahl direkt normal verwendet und die Farbcodes in die Quere kommen.

Wenn dies eine wichtige Funktion für Sie ist, empfehle ich Ihnen, die Verwendung von zsh in Betracht zu ziehen.

Aktualisieren

Bash 4.3 readline fügt eine Variable hinzu, mit der die Farbe für die Tabulatorvervollständigung verschiedene Farben für ausführbare Dateien, Verzeichnisse usw. während der Tabulatorvervollständigung anzeigt:

colored-stats

Readline im kommenden Bash 4.4 fügt eine Variable hinzu, mit der die Farbe den übereinstimmenden Teil der Zeichenfolge während der Vervollständigung der Registerkarte anzeigt.

colored-completion-prefix

Sie können die Werte dieser Variablen mit sehen

bind -v | grep color

Fügen Sie Ihrer ~/.inputrcDatei Zeilen hinzu, um sie festzulegen :

set colored-stats on
Bis auf weiteres angehalten.
quelle
1
@ Ryan: Zsh ist ziemlich kompatibel mit Bash. Sie werden wahrscheinlich feststellen, dass der Wechsel ziemlich einfach ist. Es hat viele leistungsstarke Funktionen, die Bash nicht bietet (oder für die Sie externe Dienstprogramme verwenden müssen). Es gibt nur wenige Dinge, die sich in den Grundlagen erheblich unterscheiden. Ein Beispiel ist, dass Array-Indizes auf Eins anstatt auf Null basieren, aber es gibt eine Einstellung, die sich darauf auswirkt. Ich benutze zsh allerdings nur gelegentlich.
Bis auf weiteres angehalten.
1
@AstroFloyd: Aus der Bash Manua : "Die Farbdefinitionen werden aus dem Wert der LS_COLORSUmgebungsvariablen abgeleitet." Die Dokumentation für diese Variable finden Sie hier . Es gibt keine Einstellung für manSeiten. Sie müssen sich also ansehen, wo Ihre Seiten LS_COLORSeingestellt sind, und die entsprechende Farbkombination finden und sie ändern. Auf meinem System werden manSeitennamen beim ls
Ausfüllen des
1
... sind hellblau (wie gültige Symlinks beim Ausfüllen von Tabs).
Bis auf weiteres angehalten.
1
@AndyCarlson: Zeigt bind -v | grep colorbeides set colored-completion-prefix onund set colored-stats on? Wenn ja, was passiert, wenn Sie den Buchstaben a eingeben und dann zweimal die Tabulatortaste drücken? Wenn Sie die Einstellungen zu Ihrem ~/.inputrcTerminal hinzugefügt, aber kein neues Terminal gestartet oder nicht re-read-init-filedurch Drücken von Control-X Control-R ausgeführt haben, werden die Einstellungen nicht wirksam.
Bis auf weiteres angehalten.
2
@AndyCarlson Was wird an einer Bash-Eingabeaufforderung ausgegeben, wenn Sie Strg-x Strg-v drücken?
Bis auf weiteres angehalten.
3

Ich weiß nicht , über die Fertigstellung Farben für Befehlsoptionen und Argumente aber für Dateinamen und Verzeichnisse nach ( /unix//a/133866 ) user495470 heißt es, dass in Bash 4.3 und später können Sie hinzufügen set colored-stats onzu ~/.inputrcbekommen farbigen Fertigstellung, wenn Sie dies tun ls <tab>.

James Choi
quelle