我开始编写一个终端文本编辑器,类似于UNIX的第一个文本编辑器,例如vi.我唯一的目标是玩得开心,但我希望能够以彩色显示文本,因此我可以使用语法高亮来编辑源代码.
我怎样才能做到这一点?是否有一些特殊的POSIX API,或者我必须使用ncurses吗?(我宁愿不)
有什么建议?也许是UNIX API上的一些教科书?
kar*_*lip 167
这是一个小C程序,说明了如何使用颜色代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*yon 94
这是另一种方法.因为代码是有点清洁剂(有没有一些人会喜欢这种%s
和RESET
颜色,以结束着色).
#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;
}
Run Code Online (Sandbox Code Playgroud)
这样,很容易做到这样的事情:
printf("This is " RED "red" RESET " and this is " BLU "blue" RESET "\n");
Run Code Online (Sandbox Code Playgroud)