J'ai commencé à écrire un éditeur de texte terminal, un peu comme les premiers éditeurs de texte pour UNIX, tels que vi. Mon seul objectif est de passer du bon temps, mais je veux pouvoir afficher le texte en couleur pour pouvoir mettre en surbrillance la syntaxe lors de l'édition du code source.
Comment puis-je atteindre cet objectif? Existe-t-il une API POSIX spéciale ou dois-je utiliser ncurses? (Je ne préfère pas)
Aucun conseil? Peut-être que certains manuels sur l'API UNIX?
Ceci est un petit programme en C qui illustre comment utiliser les codes de couleur:
#include <stdio.h>
#define KNRM "\x1B[0m"
#define KRED "\x1B[31m"
#define KGRN "\x1B[32m"
#define KYEL "\x1B[33m"
#define KBLU "\x1B[34m"
#define KMAG "\x1B[35m"
#define KCYN "\x1B[36m"
#define KWHT "\x1B[37m"
int main()
{
printf("%sred\n", KRED);
printf("%sgreen\n", KGRN);
printf("%syellow\n", KYEL);
printf("%sblue\n", KBLU);
printf("%smagenta\n", KMAG);
printf("%scyan\n", KCYN);
printf("%swhite\n", KWHT);
printf("%snormal\n", KNRM);
return 0;
}
Voici une autre façon de le faire. Certaines personnes préféreront cela car le code est un peu plus propre (il n'y a pas de %s
et une couleur RESET
pour terminer la coloration).
#include <stdio.h>
#define RED "\x1B[31m"
#define GRN "\x1B[32m"
#define YEL "\x1B[33m"
#define BLU "\x1B[34m"
#define MAG "\x1B[35m"
#define CYN "\x1B[36m"
#define WHT "\x1B[37m"
#define RESET "\x1B[0m"
int main()
{
printf(RED "red\n" RESET);
printf(GRN "green\n" RESET);
printf(YEL "yellow\n" RESET);
printf(BLU "blue\n" RESET);
printf(MAG "Magenta\n" RESET);
printf(CYN "cyan\n" RESET);
printf(WHT "white\n" RESET);
return 0;
}
De cette façon, il est facile de faire quelque chose comme:
printf("This is " RED "red" RESET " and this is " BLU "blue" RESET "\n");
Vous voulez probablement codes de couleur ANSI . La plupart des terminaux * nix les prennent en charge.
Utilisez des séquences d'échappement ANSI. Cet article entre dans quelques détails à leur sujet. Vous pouvez également les utiliser avec printf
.