Comment obtenir un onglet coloré?

18

Existe-t-il un moyen d'obtenir une sortie colorée lors de l'utilisation de la tabulation dans un terminal? Mes couleurs sont bien partout ailleurs, donc je sais que j'ai réussi à activer un terminal couleur.

Utilisation de bash dans Ubuntu (10.10).

Ryan
la source
Comment spécifiez-vous une "sortie colorée lors de l'utilisation de la complétion de tabulation"?
slhck

Réponses:

21

Il n'y a pas de fonction dans Bash pour colorer la sortie pendant l'achèvement comme il y en a dans le poisson et le zsh. On pourrait écrire des fonctions de complétion qui produisent des séquences de contrôle des couleurs, mais il faudrait conserver des copies des compléments proposés avec et sans codes de couleur ou les supprimer lorsque l'utilisateur fait une sélection car Bash utilise la sélection directement normalement et les codes de couleur le feraient gêner.

Si c'est une fonctionnalité importante pour vous, je vous recommande d'envisager d'utiliser zsh.

Mise à jour

Bash 4.3 readline ajoute une variable qui permet à la couleur pour la complétion de l'onglet d'afficher différentes couleurs pour les fichiers exécutables, les répertoires, etc., pendant la complétion de la tabulation:

colored-stats

Readline dans le prochain Bash 4.4 ajoute une variable qui permet à la couleur d'indiquer la partie correspondante de la chaîne lors de la complétion de l'onglet.

colored-completion-prefix

Vous pouvez voir les valeurs de ces variables en utilisant

bind -v | grep color

Pour les définir, ajoutez des lignes à votre ~/.inputrcfichier telles que:

set colored-stats on
En pause jusqu'à nouvel ordre.
la source
1
@Ryan: Zsh est tout à fait compatible avec Bash. Vous trouverez probablement le commutateur assez facile. Il a beaucoup de fonctionnalités puissantes que Bash n'a pas (ou vous devez utiliser des utilitaires externes). Il y a seulement quelques choses qui sont significativement différentes dans les bases. Un exemple est que les index de tableau sont basés sur un au lieu de zéro, mais il y a un paramètre qui affecte cela. Cependant, je n'utilise que zsh de temps en temps.
pause jusqu'à nouvel ordre.
1
@AstroFloyd: Du Bash Manua : "Les définitions de couleurs sont tirées de la valeur de la LS_COLORSvariable d'environnement." La documentation de cette variable est ici . Il n'y a pas de paramètre pour les manpages, vous devrez donc regarder où votre LS_COLORSjeu est défini et trouver la combinaison de couleurs qui correspond et la changer. Sur mon système, les mannoms de page ne sont pas colorés lorsqu'ils sont complétés par des tabulations (et des liens symboliques cassés, alors qu'ils apparaissent en rouge sur gris en lssortie, ...
Pause jusqu'à nouvel ordre.
1
... sont bleu clair comme des liens symboliques valides pendant la tabulation).
pause jusqu'à nouvel ordre.
1
@AndyCarlson: Affiche les bind -v | grep colordeux set colored-completion-prefix onet set colored-stats on? Si oui, que se passe-t-il lorsque vous tapez la lettre a, puis appuyez deux fois sur tab? Si vous avez ajouté les paramètres à votre ~/.inputrcmais n'avez pas démarré de nouveau terminal ou n'avez pas exécuté re-read-init-fileen appuyant sur control-x control-r, les paramètres n'auront pas pris effet.
pause jusqu'à nouvel ordre.
2
@AndyCarlson Que produit une invite bash lorsque vous appuyez sur ctrl-x ctrl-v?
pause jusqu'à nouvel ordre.
3

Je ne connais pas les couleurs de complétion pour les options de commande et les arguments mais pour le nom de fichier et les répertoires, selon ( /unix//a/133866 ) user495470 indique que dans Bash 4.3 et versions ultérieures, vous pouvez ajouter set colored-stats onà ~/.inputrcpour obtenir la couleur achèvement quand vous le faites ls <tab>.

James Choi
la source