Dea*_*ean 3 c linux curses terminal console-application
有没有办法修改终端中已有的文本,但与简单的进度条清除不同\r,通过完全修改文本
例如
user@machine$ grep -R 'mystuff' .
result1
result2
result3
user@machine$
Run Code Online (Sandbox Code Playgroud)
使用箭头来例如移动“虚拟”光标(|)
user@machine$ grep -R 'mystuff' .
|result1
result2
result3
user@machine$
Run Code Online (Sandbox Code Playgroud)
最重要的是,不清除终端?
您可以使用转义序列在 linux 终端上执行各种操作。您可以从以下参考资料中了解这一点:
直接使用转义序列控制终端是非常棘手的,因为您必须处理各种边界情况和副作用,具体取决于终端的实际内容和您在其上显示的文本类型(ASCII、UTF-8 或其他奇异的变种...)
您的用例使它变得更加困难,因为您必须首先确定由不相关的命令(例如 )生成的终端的内容grep,还取决于终端的特定宽度和高度、shell 提示等。
作为qemacs的共同作者和维护者,我可以告诉您让进程缓冲区正确运行,以透明的方式处理 shell 和程序输出以及用户输入,同时所有这些内容都可以在编辑器的缓冲区和窗口中自由编辑。如果您不胆怯,可以查看源文件tty.c和shell.c。
因此,我敦促您从不同的角度重新考虑您的问题: