我正在做一个shell,我想添加自动完成功能。为此,我查看了termios.h
。
我以规范(=原始)模式传递终端,如下所示:
struct termios settings;
tcgetattr(0, &settings);
settings.c_lflag &= ~ICANON;
tcsetattr (0, TCSANOW, &settings);
我处理完这样的角色后:
while((c = getchar()) != '\n') {
if(c == 127) { //backspace
printf("\b \b\b \b\b \b");
continue;
}
if(c == 9) { //tab
printf("\b\b\b\b");
//do something
}
}
我的问题是我没有设法撤消选项卡的回显,因为它并不总是要移除的空格数量相同,我不知道如何做到这一点。最好的不是打印标签,但我也不知道如何处理这个......
那么有一种不打印标签的简单方法吗? (或者如果没有,撤消它。)